2

SWIGを使用して、Pythonで使用するC++コードをラップしようとしています。ここで説明するように、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

私は最初に呼び出し、次にswigEclipseビルダーを使用しています。qmakemake

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

コンパイルとリンクは正常に機能しますが、がbin/_mylibname.dylib残り、Pythonアプリケーションを実行すると、ステートメントのインポート_mylibnameが失敗します。

誰かがqmakeに*.so代わりにを構築させる方法を知っていますか?*.dylibおそらく使用してlibtoolいます(または私が気にするすべての他の方法)?私のプラットフォーム:

  • Mac OS X Snow Leopard(10.6)
  • Python 2.6
  • SWIG 1.3.31
  • qmake2.01aとQt4.6.2
  • g ++ i686-apple-darwin10-g ++-4.2.1

私はリンクの問題についてあまり知識がないので、優しくしてください:-)

オーレ

4

1 に答える 1

0

2つの問題があるかもしれないと思います。

出力ファイルを .so ファイルにするために、コンパイル オプション-o mylib.soを設定すると、gcc はファイルに正しい名前を付けるようになりました。

あなたが抱えているかもしれないもう1つの問題は、Macではpython libに対するリンクがLinuxマシンと同じではないということです。私が見つけたのは、Macで-lpythonを使用せずにpython libにリンクするのではなく、-framework pythonを使用すると、リンカーが正しいlibを見つけることです。

于 2010-07-22T03:34:44.593 に答える