我在編譯由於編譯器錯誤導致的python包裝的swig的第一個教程示例時遇到問題。第一個示例由於編譯器錯誤而無法編譯
我請參考本教程http://www.swig.org/Doc1.3/Python.html#Python_nn4
我創建的所有文件,並在「31.2.3手工編制的動態模塊」指定執行的命令。背景:我在windows 64位系統上使用cygwin中的swig和gcc。
swig -python example.i
gcc -O2 -fPIC -c example.c
gcc -O2 -fPIC -c example_wrap.c -I/usr/include/python2.7/
這些命令工作正常。 在最後一步,發生了很多錯誤。我玩了至少2個小時,並找不到錯誤。我也包含了所有相關的python路徑,但錯誤仍然存在。
gcc -shared example.o example_wrap.o -o _example.so
example_wrap.o:example_wrap.c:(.text+0x4e): undefined reference to `PyArg_ParseTuple'
example_wrap.o:example_wrap.c:(.text+0x4e): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `PyArg_ParseTuple'
example_wrap.o:example_wrap.c:(.text+0x79): undefined reference to `PyLong_AsLong'
example_wrap.o:example_wrap.c:(.text+0x79): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `PyLong_AsLong'
...
有沒有人知道問題出在哪裏?我想這與我在cygwin中的gcc的編譯器設置有關,但是我無法讓它工作。
在此先感謝
這些不是編譯器錯誤,但*鏈接器*錯誤。這意味着它無法找到您直接或間接調用的某些功能。要解決它,你需要鏈接到包含這些文件的庫。來自SWIG wiki的 –
[此條目](http://www.dabeaz.com/cgi-bin/wiki.pl?SwigFaqDLLUsingCygwin)看起來可能相關。 –