我在我的C++应用程序中嵌入了Python解释器,并且导出了一些在解释器中可以调用的类。在
现在这个应用程序也加载插件(DLL文件),我希望能够在加载插件时添加新的方法,但是在google了一天之后,我找不到该怎么做。:/
MainApp调用
PyImport_AppendInittab("mymodule", &PyInit_mymodule);
Py_Initialize();
bp::import("mymodule");
和bp::import调用init,即:
^{pr2}$之后,插件被调用,现在我想向“mymodule”添加更多方法,如果不可能的话,添加到一个新的模块名中,但是我不能让它工作!在
这是我尝试过的十种不同方法之一,在这里创建一个新模块:
void OnWizard() // The function that I want to call
{ }
BOOST_PYTHON_MODULE(PluginModule)
{
docstring_options doc_options(true, true, false);
def("wizard", OnWizard);
}
void PluginDLL::RegisterPythonFunctions()
{
try {
// PyImport_AddModule("PluginModule"); // Creates an empty module
// PyModule_Create(&pluginmodule); // Doesn't seem to work
// PyImport_AppendInittab("PluginModule", &PyInit_PluginModule); // Needs to be called before Py_Initialize
// PyImport_ImportModule("PluginModule");
boost::python::import("PluginModule")
}
catch (error_already_set)
{
PyErr_Print();
}
}
那么如何在执行Py_Initialize之后创建一个新的模块呢?是否可以将“向导”功能添加到“mymodule”范围中,或者甚至更好我的模块.插件模块"? 在
欢迎有任何想法!使用boost1.56和python3.4。在
目前没有回答
相关问题 更多 >
编程相关推荐