1

これはサブハッシュです。fortran-matlabmexファイルのリンクに問題があります。MATLABR2010aを実行しています。私はMATLABでFortranサブルーチンをmexしようとしています。MSYS、MinGW、gfortranをインストールしました。また、c:\ document\MATLABフォルダーにgnumexをダウンロードして抽出しました。gnumexと入力して、インストール設定を実行しました。この時点で、ウィンドウポップアップが表示され、次のように入力しました。

  1. MinGWのルートディレクトリ--->c:\ mingwを指していますb)Cygwinの
  2. ルートディレクトリ----->空白のままc)
  3. g95.exeへのパス------>c:\ mingw \ bin
  4. gfortran.exeへのパス------>c:\ program files \ gfortran \ bin e)
  5. gnumexユーティリティへのパス------>c:\ users ..... \ matlab \ gnumex
  6. 環境リンクタイプ------>MinGW
  7. mexdllまたはengineを生成します----->mex
  8. コンパイル用の言語------->fortran77
  9. スタブを追加------>いいえ
  10. 最適化レベル----->-O3

  11. ライブラリと.defファイルのパスc:\ users ... \ Roaming \ MathWorks \ MATLAB \ R2010a \ gnumex

  12. 作成するMexオプションファイル:c \ users ... \ Roaming \ MathWorks \ MATLAB \ R2010a \ mexopts.bat

上記は、gnumexを使用したmexのインストールセットアップです。make options fileを押すと、「mex.plを訂正できません.....」という警告メッセージが表示されます。「書き込み用にc:... \ R2010a \ bin\mex.plを開くことができません」

[OK]をクリックすると、mexopts.batの上書きを確認するように表示されます。確認を押すと、optファイルが作成されます。

この時点で、mexセットアップの準備ができているはずです。しかし、fortran mexの例xtimesy.fなどを実行すると(コマンドプロンプトでmex filename.fを使用します)、次のエラーが発生します

g77:getValidInputLinkLibraries:そのようなファイルまたはディレクトリはありませんc:\ prog〜1 \ MATLAB \ R2010A \ BIN \ MEX.PL:エラー:「xtimesy.mexw32」のリンクに失敗しました。---> mexat222の使用中にエラーが発生しました。正常に完了できません。

このアンインストールを数回試しましたが、同じエラーが発生しました。誰かが私がどこで間違っているのか教えてくれませんか。これはg77をリンクするための正しい手順ではありませんか?これに少し光を当ててください。

お時間をいただきありがとうございます。

ありがとう。

4

1 に答える 1

1

私は最近、いくつかのFortranルーチンをメックスしようとしましたが、WindowsのmatlabによるFortranコンパイラのサポートが不十分だったために失敗しました。f2cを使用してFortranをCコードに変換し、自動生成されたCコード関数を呼び出すゲートウェイルーチンをCで作成し、matlab(フリーエクスプレスエディションバージョンで十分ですが、デバッグにも使用できます)。

f2cはhttp://www.netlib.org/f2c/から入手できます。生成されたCコードをf2cライブラリにリンクする必要があります。これは、ソースからビルドする必要がある場合もあります。

これはすべて非常に複雑に聞こえますが、私が見つけた最も簡単な解決策でした。

于 2011-04-20T22:55:29.760 に答える