2013-02-08 31 views
15

Mac OS X için Swig kullanarak bir C++ uzantısı derlemeye çalışıyorum. Yine de birkaç bağlantı hatalarıyla karşılaştım. Python Swig temel öğretici da Mac üzerinde başarısız görünüyor:Mac OS X üzerinde SWIG ile C++ Derleme

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 

ilk üç satırı iyi çalışır. Son satır bir bağlayıcı hatasıyla başarısız oluyor. Bununla OS X üzerinde son satırı çalıştı ve aynı hata var:

g++ -dynamiclib example.o example_wrap.o -o _example.so 

son satırından hatadır:

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 

teşekkür ederiz.

+4

'-lpython'

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 
ama Mac nesneleri uzantısı' var paylaştı @Petesh – Petesh

+0

Teşekkür .dylib'! Ana Swig kodumla (swig.i dosyasında belirttiğim bazı işlevler için tanımlanmamış semboller) farklı bir konuya asıldım. Temel Swig işlevselliği şimdi çalışıyor. –

+0

Aaaaand tekrar kullanışlı iplik makaraları grevi. Bu, bir macdayken çoklu SWIG tabanlı kitaplıklarla çalışan yaygın ve yaygın bir sorundur. Neden cehenneme kapattın? – Shayne

cevap

14

Tamlık için - teşekkürler Petesh. işleri -

bağlama sorunu ele almalıdır derleme satırın sonunda