Ich versuche, eine C++ - Erweiterung mit Swig für Mac OS X zu kompilieren. Ich habe jedoch ein paar Linker Fehler aufgetreten. Die grundlegenden Tutorial für Python Swig scheinen auch auf dem Mac zum Scheitern verurteilt:Kompilieren von C++ mit SWIG unter Mac OS X
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
Die ersten drei Zeilen funktionieren. Die letzte Zeile schlägt mit einem Linkfehler fehl. Ich habe versucht, die letzte Zeile auf OS X mit diesem, und bekam den gleichen Fehler:
g++ -dynamiclib example.o example_wrap.o -o _example.so
Der Fehler aus der letzten Zeile ist:
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
Dank.
'-lpython' am Ende der Kompilierung Zeile sollte die Verknüpfung Problem beheben, aber Mac gemeinsam genutzte Objekte haben die Endung' .dylib' – Petesh
Danke, @Petesh - das funktioniert! Ich habe mich auf ein anderes Problem mit meinem Haupt-Swig-Code festgelegt (undefinierte Symbole für einige Funktionen, die ich in der swig.i-Datei auskommentierte). Basic Swig-Funktionalität funktioniert jetzt. –
Aaaa und wieder der close-usable-thread fairys strike. Dies ist ein häufiges und häufiges Problem beim Arbeiten mit mehreren SWIG-basierten Bibliotheken auf einem Mac. Warum zur Hölle würdest du es schließen ?! – Shayne