2010-04-08 7 views
2

Je suis en train d'utiliser SWIG pour envelopper un code C++ pour l'utilisation avec Python. Comme décrit here il semble nécessaire de lier mon code C++ contre un fichier .so, pas un fichier .dylib. Le fil suggère d'utiliser libtool en combinaison avec le drapeau -module pour créer un lien, mais je me sers qmake et ont besoin d'instructions plus précises sur la façon dont je le fais.Comment lier .so au lieu de .dylib sur OSX 10.6 en utilisant qmake

Mon fichier .pro (pour qmake) ressemble à ceci:

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 

j'invoque d'abord swig, puis qmake, puis make en utilisant Eclipse constructeurs:

cd src/ 
swig -c++ -python swig.i 
cd .. 
qmake -spec macx-g++ 
make all 

Compilez et liez fonctionne très bien , mais me laisse avec bin/_mylibname.dylib, et quand je cours mon application python, l'instruction d'importation _mylibname échoue.

Est-ce que quelqu'un sait comment je peux obtenir qmake pour construire un *.so au lieu d'un *.dylib, éventuellement à l'aide libtool (ou de toute autre manière pour tout ce que je fous)? Ma plate-forme:

  • Mac OS X Snow Leopard (10.6)
  • Python 2.6
  • SWIG 1.3.31
  • qmake 2.01a avec Qt 4.6.2
  • g ++ i686-pomme-darwin10- g ++ - 4.2.1

Je ne suis pas très informé des questions liant, donc s'il vous plaît soyez doux :-)

Ole

Répondre

0

Je pense que vous pourriez avoir deux questions.

Pour obtenir le fichier de sortie pour un fichier .so, je mets l'option de compilation -o mylib.so et que gcc forcé de nommer le fichier correctement.

L'autre question que je pense que vous pourriez avoir est que sur le Mac, contre la lib lier python n'est pas la même chose que sur une machine Linux. Ce que je trouve qui était sur le mac ne pas utiliser -lpython pour créer un lien vers le répertoire lib python, mais plutôt utiliser python -Cadre et l'éditeur de liens trouver la lib correcte.

Questions connexes