向现有的python模块添加方法(boostpython)?

2024-06-08 01:03:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我在我的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。在


Tags: 模块to方法pyimport插件应用程序解释器

热门问题