#ifndef PyMODINIT_FUNC /* declarations for DLL import/export */
#define PyMODINIT_FUNC void
#endif
PyMODINIT_FUNC initclient(void) {
PyObject* m;
ClientType.tp_new = PyType_GenericNew;
if (PyType_Ready(&ClientType) < 0)
return;
m = Py_InitModule3("client", client_methods, "Client module");
Py_INCREF(&ClientType);
PyModule_AddObject(m, "Client", (PyObject *) &ClientType);
}
这是在32位Linux上,带有gcc 4.4.4。
我也有同样的问题。编译时:
我忘了编译定义模块的C文件。。。叹息。。。
所以,首先要检查的是:makefile或编译命令!:)
我收到了同样的错误消息,但这是因为我重命名了.c文件,忘记更新代码中的名称。“initxxx”函数及其内部的参数。
确保不要混合使用Python版本。在Python版本2中,init函数被称为init_u,而在版本3中,这个函数被称为PyInit_u
在我的例子中,这发生在SWIG 3.0.2使用python3.4生成绑定时,而我的Python IDE调用了Python 2.7解释器。
您可以在生成的.cxx文件中看到差异:
在linux上,还可以使用以下命令检查.so导出:
这将给出库中init函数的名称。
相关问题 更多 >
编程相关推荐