Я пытаюсь использовать SWIG, чтобы обернуть некоторый код C ++ для использования с Python. Как описано здесь , представляется необходимым связать мой код C ++ с файлом .so
, а не с файлом .dylib
. В ветке предлагается использовать libtool
в сочетании с флагом -module
для ссылки, но я использую qmake и мне нужны более точные инструкции о том, как я это делаю.
Мой .pro-файл (для qmake) выглядит так:
TEMPLATE = lib
TARGET =
CONFIG += qt debug console plugin no_plugin_name_prefix
QT += opengl
DEPENDPATH += . libgm src
INCLUDEPATH += . libgm src /usr/include/python2.6/
LIBS += -L/usr/lib -lpython
MOC_DIR = .moc
OBJECTS_DIR = .tmp
DESTDIR = bin
TARGET = _mylibname
DEFINES += COMPILE_DL=1
HEADERS += <my_headers> \
src/swig_wrap.h
SOURCES += <my_sources>
src/swig_wrap.cxx
Я сначала вызываю swig
, затем qmake
, затем make
, используя Eclipse Builder:
cd src/
swig -c++ -python swig.i
cd ..
qmake -spec macx-g++
make all
Compile and Link работает нормально, но оставляет меня с bin/_mylibname.dylib
, и когда я запускаю свое приложение python, оператор import _mylibname
завершается неудачей.
Кто-нибудь знает, как я могу заставить qmake построить *.so
вместо *.dylib
, возможно, используя libtool
(или каким-либо другим способом для меня все равно)? Моя платформа:
- Mac OS X Snow Leopard (10,6)
- Python 2.6
- SWIG 1.3.31
- qmake 2.01a с Qt 4.6.2
- g ++ i686-apple-darwin10-g ++ - 4.2.1
Я не очень разбираюсь в вопросах связывания, поэтому, пожалуйста, будьте осторожны: -)
Оле