2013-02-08 12 views
15

Mac OS X用のSwigを使用してC++拡張をコンパイルしようとしていますが、いくつかのリンカエラーが発生しました。 Pythonのガブガブ飲むための基本的なチュートリアルでは、Mac上で失敗しているようだ:Mac OS XでSWIGを使用してC++をコンパイルする

http://www.swig.org/Doc1.3/Python.html#Python_nn10

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

最初の3行は正常に動作します。最後の行はリンカーエラーで失敗します。私はこれで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 

感謝。

+4

'-lpython'リンク問題に対処する必要がありますが、マックは、'オブジェクトは拡張子を持つ共有 – Petesh

+0

おかげで、@Petesh .dylib' - 作品!私は主なSwigコード(swig.iファイルでコメントアウトしたいくつかの関数のための未定義のシンボル)とは別の問題でハングアップしていました。基本的なSwigの機能が動作します。 –

+0

また、Aaaaandに近い便利なスレッドのfairysストライキ。これは、Mac上で複数のSWIGベースのライブラリを扱う一般的で幅広い問題です。なぜあなたはそれを閉じますか? – Shayne

答えて

14

完璧のために - ありがとうPetesh。コンパイル行の末尾に

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 -dynamclib example.o example_wrap.o -o _example.so 
関連する問題