我在我的C++应用程序中嵌入了Python 2.7,它的工作与预期一样。现在切换到Python 3需要将Py_ModuleInit
替换为PyModule_Create
和PyImport_AppendInittab
的组合,请参见下面的示例:
PyObject* PyInit_xyzzy(void)
{
return PyModule_Create(&xyzzymodule);
}
int main()
{
...
PyImport_AppendInittab("xyzzy", PyInit_xyzzy);
Py_Initialize();
...
}
由于几个原因,我目前无法更改应用程序中模块的注册过程。基本上,我有一个数组std::vector<PyModuleDef>
,其中包含准备注册的所有模块定义。但是PyImport_AppendInittab
接受一个没有任何上下文指针的函数指针。Lambdas显然也不起作用,那么什么是正确注册模块的好方法呢?还有别的办法吗
int main()
{
for (const PyModuleDef& mod : getAllModules()
{
PyImport_AppendInittab(mod.m_name, ????????);
}
Py_Initialize();
}
目前没有回答
相关问题 更多 >
编程相关推荐