0

Mingw を使用して Windows で autodiff python ライブラリ pyadolc をコンパイルしようとしています。基になる c++ ライブラリである adol-c を呼び出すには、boost python が必要です。

最初に mingw で boost_python ライブラリ (dll) をコンパイルしました。生成された dll は libboost_python-mgw46-mt-1_53.dll および libboost_python-mgw46-mt-1_53.dll.a という名前で、それぞれ /mingw/bin および /mingw/lib にあります。

次に、pyadolc をビルドすると、ビルド スクリプトはコマンド -lboost_python で試行します。dll の名前が libboost_python.dll ではなく libboost_python-mgw46-mt-1_53.dll であるため、失敗しました。

そこで、/mingw/bin で dll の名前を libboost_python.dll に変更しました。それは機能し、すべてが正常にリンクします。

ただし、python shell で試したとき

インポートアドルク

それは私にエラーを与えました: ImportError: No dll found for _adolc (そのようなもの)。すると、libboost_python-mgw46-mt-1_53.dll を探していたことが原因であることがわかりました。

私の質問は次のとおりです: dll の命名はどのように機能しますか? このような状況を処理する適切な方法は何ですか? ビルド スクリプトを変更する必要がありますか、それとも dll の名前を変更する必要がありますか? Linux では、おそらく libboost_python.so から libboost_python-xxxx-mt-1_53.so へのシンボリック リンクを作成できます。しかし、Windows XP では、ファイルへのシンボリック リンクはそれほど簡単ではありません。

4

2 に答える 2

0

dll の命名方法と検出方法に関する情報は、http: //msdn.microsoft.com/en-us/library/windows/desktop/ms682586%28v=vs.85%29.aspxにあります。Windows Vista 以降を使用している場合は、シンボリック リンクを作成できます。古いバージョンの場合は、sysinternals.com のジャンクションを使用できます。

于 2013-04-22T21:09:19.180 に答える