编译C++;在Mac OS X上使用SWIG 我试图用Mac OS X使用SWIG编译C++扩展。不过,我遇到了几个链接错误。Python Swig的基本教程在Mac上似乎也失败了:

编译C++;在Mac OS X上使用SWIG 我试图用Mac OS X使用SWIG编译C++扩展。不过,我遇到了几个链接错误。Python Swig的基本教程在Mac上似乎也失败了:,c++,macos,g++,shared-libraries,swig,C++,Macos,G++,Shared Libraries,Swig,前三行很好用。最后一行失败,出现链接器错误。我用这个在OS X上尝试了最后一行,得到了相同的错误: g++ -dynamiclib example.o example_wrap.o -o _example.so 最后一行的错误是: Undefined symbols for architecture x86_64: "_PyArg_ParseTuple", referenced from: __wrap_fact in example_wrap.o "_PyArg_Unpa

前三行很好用。最后一行失败,出现链接器错误。我用这个在OS X上尝试了最后一行,得到了相同的错误:

g++ -dynamiclib example.o example_wrap.o -o _example.so
最后一行的错误是:

Undefined symbols for architecture x86_64:
  "_PyArg_ParseTuple", referenced from:
      __wrap_fact in example_wrap.o
  "_PyArg_UnpackTuple", referenced from:
      _SwigPyObject_own in example_wrap.o
  "_PyBool_FromLong", referenced from:
      _SwigPyObject_richcompare in example_wrap.o
      _SwigPyObject_own in example_wrap.o
...
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
谢谢。

谢谢你的完整性——谢谢彼得

swig -c++ -python example.i
g++ -O2 -fPIC -c example.cxx
g++ -O2 -fPIC -c example_wrap.cxx -I/usr/include/python2.6
g++ -lpython -dynamiclib example.o example_wrap.o -o _example.so

编译行末尾的
-lpython
应该可以解决链接问题,但是Mac共享对象具有扩展名
.dylib
,谢谢,@Petesh--可以了!我的主Swig代码(某些函数的未定义符号,我在Swig.I文件中注释掉了这些符号)遇到了另一个问题。基本的Swig功能现在可以工作了。aaaa然后关闭有用的线程fairys。在mac上使用多个基于SWIG的库时,这是一个常见且广泛的问题。你为什么要关上它?!粘贴此代码时有一个拼写错误:“dynamiclib”-->“dynamiclib”
swig -c++ -python example.i
g++ -O2 -fPIC -c example.cxx
g++ -O2 -fPIC -c example_wrap.cxx -I/usr/include/python2.6
g++ -lpython -dynamiclib example.o example_wrap.o -o _example.so