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 では、ファイルへのシンボリック リンクはそれほど簡単ではありません。