Próbuję skompilować rozszerzenie C++ za pomocą Swig dla Mac OS X. Mam jednak do czynienia z kilkoma błędami linkera. Podstawowy poradnik dla Pythona Swig również wydaje się nie działać na Mac:Kompilowanie C++ z SWIG na 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
Pierwsze trzy linie działać prawidłowo. Ostatni wiersz kończy się niepowodzeniem z błędem linkera. Próbowałem ostatnią linię na OS X z tym, i dostał ten sam błąd:
g++ -dynamiclib example.o example_wrap.o -o _example.so
Błąd z ostatniej linii to:
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
Dzięki.
'-lpython' na końcu linii kompilacji powinni zająć się kwestią wiążącą, ale Mac wspólne obiekty mają rozszerzenie' .dylib' – Petesh
Dzięki, @Petesh - to działa! Zostałem zawieszony na innym numerze z moim głównym kodem Swiga (niezdefiniowane symbole dla niektórych funkcji, które skomentowałem w pliku swig.i). Podstawowe funkcje Swig działają teraz. –
Aaaa i ponownie ostrzeżenie o bajecznie bliskich użytecznych wątkach. Jest to powszechny i szeroki problem podczas pracy z wieloma bibliotekami opartymi na SWIG. Dlaczego do diabła chcesz to zamknąć ?! – Shayne