链接错误:Python的C/C++扩展
正如我标题所说,我正在尝试为Python开发一个C扩展。我按照这里的教程进行了操作,并运行了setup.py脚本。然而,当我运行Python解释器并尝试导入我新创建的模块时,出现了一个链接错误,提示未定义的符号:py_BuildValue。我还尝试自己编译,但得到了相同的错误,另外还有一个错误提示Py_InitModule3未定义。我已经安装了python3.2-dev和python3-dev。以下是我的test.c代码:
#include <python3.2/Python.h>
static PyObject* Test(PyObject* self){
return py_BuildValue("s","This is a test and my first trip into the world of python bindings!!");
}
static PyMethodDef test_funcs[] ={{"testExtensions",(PyCFunction)Test, METH_NOARGS,"This is my First Extension!!"},{NULL}};
void initTest(void){
Py_InitModule3("Test", test_funcs, "Extension module example!");
}
这是我的setup.py代码:
from distutils.core import setup, Extension
setup(name='Test', version='1.0', \
ext_modules=[Extension('Test', ['test.c'])])
1 个回答
2
这是因为这个函数叫做 Py_BuildValue
,而不是 py_BuildValue
。在C语言中,大小写是有区别的。如果你查看一下编译信息的上面部分,你可能会看到一个警告,提示这个函数被隐式声明了。