0

我有一些在 linux 下工作的代码,现在我正在尝试在 Max 10.6.8 下编译代码。我正在使用 EPD 32 位 python、g++ 版本 4.2.1、swig 版本 2.0.9。这是我正在使用的命令

swig -c++ -python pythoncpp.i
g++ -O2 -fPIC -c  pythoncpp_wrap.cxx -I/PATH/Library/EPD/2.7-32/include/python2.7  -I/PATH/local/gsl/include
g++ -O2 -fPIC -c  pythoncpp_wrap.cxx -I/PATH/Library/EPD/2.7-32/include/python2.7  -I/PATH/local/gsl/include
g++  -L/Users/densmore3/local/gsl/lib -lpython -dynamclib pythoncpp.o pythoncpp_wrap.o -lgsl -lgslcblas -lm -o _pythoncpp.dylib

前三行运行时出现错误或警告。但是,链接行会引发以下错误

Undefined symbols:
 "_PyCapsule_Import", referenced from:
  _SWIG_Python_GetModule in pythoncpp_wrap.o
"_PyCapsule_New", referenced from:
  _SWIG_Python_SetModule in pythoncpp_wrap.o
"_main", referenced from:
  start in crt1.10.6.o
"_PyCapsule_GetPointer", referenced from:
  _SWIG_Python_DestroyModule in pythoncpp_wrap.o  
 ld: symbol(s) not found
collect2: ld returned 1 exit status

如何修复此错误?谢谢

4

1 回答 1

1

供我以后参考。使用

    ld -bundle -flat_namespace -undefined suppress -L/PATH/local/gsl/lib -lgsl -lgslcblas -lm -o _pythoncpp.so *.o

努力链接所有文件。

于 2013-03-21T00:04:10.590 回答