0
正如我的標題所說,我正在嘗試開發Python的C擴展。我在這裏跟着這篇教程,並且運行了setup.py腳本。當我運行python解釋器並嘗試導入新創建的模塊時,我得到一個未定義符號的鏈接器錯誤:py_BuildValue。我也嘗試編譯它我自己,我得到了同樣的錯誤加上一個錯誤,說Py_InitModule3是未定義的。我已經安裝了python3.2-dev和python3-dev。這裏是我的test.c的代碼:鏈接器錯誤:Python的C/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'])])
哦,嗯。我正在學習一個教程。事實上,科迪被複制和粘貼。但我想這可能是謝謝。 – rady 2014-09-03 02:25:03
我跟進了這個。我一直都知道這樣做很愚蠢,但看起來這不是問題。 – rady 2014-09-03 12:32:11
@rady:你確定它是一樣的錯誤?當我嘗試編譯你的代碼但修改了'Py_BuildValue'的大小寫時,錯誤就轉而建立了'Py_InitModule3',這是可以理解的,因爲這是一個Python 2函數,而在你看來你正在嘗試爲Python 3進行編譯。 – Dolda2000 2014-09-03 15:41:09