1

主にLinuxを使用して、pythonとf2pyでいくつかのコードを書きました。これはすべて正常に機能しますが、これを Windows ユーザーと共有したいので、必ずしも gfortran や gcc を持っていないユーザーに配布可能なモジュールを作成しようとしています。Windows XPボックスにアクセスでき、gfortranでmingwを使用しています。そのマシンでモジュールをコンパイルして使用できますが、他のマシンでは、作成された pyd には dll の libgcc と libgfortran が必要なようです。http://www.scipy.org/F2PY_Windowsの例を次に示します。

subroutine hello ()
   write(*,*)'Hello from Fortran90!!!'
end subroutine hello

でコンパイル

python c:\path\to\python\scripts\f2py.py -c \
       --fcompiler=gnu95 --compiler=mingw32 \
        -lmsvcr71 -m foo foo.f90

これは、コンパイルしたマシンでは期待どおりに機能しますが、別のマシンにコピーすると、

DLL load failed: The specified module could not be found.

依存関係ウォーカーを使用すると、libgcc_s_dw2-1.dll および libgfortran-3.dll の dll が見つからないことがわかります。ユーザーが gcc と gfortran を持っていると仮定せずに配布できる pyd を作成することは可能ですか? 私は両方のマシンで python2.7 を使用しています。両方とも 32 ビットです。1 つは XP、もう 1 つは Windows 7 です。

4

1 に答える 1

1

libgccパッケージにおよびdllを含める代わりにlibgfortran、MinGWのビルドで使用できる場合は、これらのライブラリの静的バージョンに対してリンクできるようにする必要があります。(少なくとも、そうだと思います。Pythonやpydsの経験はありませんが、通常の実行可能ファイルやdllでは可能です。)

リンクのオプションを確認するか、より詳細な制御と-staticが必要な場合は。-static-libgcc-static-libgfortran

于 2012-03-21T13:00:06.000 に答える