1

MATLAB ルーチンから呼び出される MEX 関数を作成してコンパイルしました。私のコンピューターでは問題なく動作します。ただし、別のコンピューターでルーチンを実行しようとすると、モジュールが存在しないというエラーで中断します。私の MEX 関数は、GSL ライブラリやその他のライブラリを参照しています。MEX 関数をコンパイルしてスタンドアロンにすることができるかどうかを知りたいです。スタンドアロンとは、MEX ファイルを別のコンピューターにコピーするだけで、ライブラリやコンパイラがインストールされていない場合でも機能することを意味します。

ありがとう!

4

1 に答える 1

0

外部ライブラリは静的ライブラリである必要があります。次に、それを行うにはいくつかの方法があります。

  • mex の実行時に「-static」リンカー フラグを追加します (gcc オプション)。
  • 「-lgsl」を使用する代わりに「/path/to/libgsl.a」を追加 (Linux)
  • または、mex ファイルで使用するライブラリのオブジェクト ファイルを mex コマンドに追加するだけです。

mex ファイル自体は、互換性のあるシステム (64 ビット対 32 ビット、libc バージョンと一致) でのみ実行されます。

Linux では、正しくコンパイルされたかどうかを確認するには、「ldd mexfile.mexext」と入力します。外部ライブラリはリストに表示されません。

于 2012-09-05T12:42:04.710 に答える