Python ImportError:动态模块未定义初始化函数
我试图复制以下教程 我在C++中的Python扩展如下所示:Python ImportError:动态模块未定义初始化函数,python,c++,Python,C++,我试图复制以下教程 我在C++中的Python扩展如下所示: #include <Python.h> static PyObject* py_myFunction(PyObject* self, PyObject* args) { char *s = "Hello from C!"; return Py_BuildValue("s", s); } static PyObject* py_myOtherFunction(PyObject* self, PyObject* a
#include <Python.h>
static PyObject* py_myFunction(PyObject* self, PyObject* args)
{
char *s = "Hello from C!";
return Py_BuildValue("s", s);
}
static PyObject* py_myOtherFunction(PyObject* self, PyObject* args)
{
double x, y;
PyArg_ParseTuple(args, "dd", &x, &y);
return Py_BuildValue("d", x*y);
}
static PyMethodDef extPy_methods[] = {
{"myFunction", py_myFunction, METH_VARARGS},
{"myOtherFunction", py_myOtherFunction, METH_VARARGS},
{NULL, NULL}
};
void initextPy(void)
{
(void) Py_InitModule("extPy", extPy_methods);
}
在使用python setup.py安装调用它之后,.so文件似乎位于正确的位置
但是,当我尝试将此扩展与import extPy
一起使用时,会出现以下错误:
ImportError:动态模块未定义初始化函数
我错过了什么?谢谢帮助。< p>因为函数<代码> iTeXPyP是C++函数,导致C++编译器无法识别。
您需要将函数标记为extern“C”
以禁止名称损坏:
extern "C" void initextPy(void)
{
...
}
这就成功了。非常感谢。
extern "C" void initextPy(void)
{
...
}