2

既知のインターフェイスを備えた Matlab mex ファイルがあります。この mex ファイルは他の人から提供されているため、コードにアクセスできません。C++ で mex 関数を呼び出す効率的な方法はありますか? ありがとう!

4

3 に答える 3

1

の使用を検討しましたmexCallMatlabか?
mex ファイルを標準の matlab 関数として扱い、 を使用して C++ から呼び出すことができますmexCallMatlab

于 2013-02-18T15:55:48.497 に答える
0

mex ファイルは単なる動的ライブラリです。でそれらをロードし、LoadLibraryでそれらの関数を呼び出すことができますGetProcAddress。(または、*nixdlopenおよびで同等にdlsym)。

MatLab が渡すものと互換性があるようにパラメーターを設定するのは少し面倒ですが、特に難しいことではありません。自分で mex 関数を作成した経験があり、呼び出し規約に精通している場合に役立ちます。

于 2013-02-18T16:00:43.420 に答える
0
  1. Matlab からのmexext 呼び出しは、システムで許可されている互換性を示します。(32 ビットまたは 64 ビット)

  2. mex でコンパイルされた実行可能ファイルは、C++ 環境の AFAIKから呼び出すことはできません。これらは、Matlab コマンド ウィンドウ/Matlab 関数で動作します。

元:

system("mymex") は次のようなエラーを返します:

'mymex' is not recognized as an internal or external command,
operable program or batch file.

システム ("ttt.mexw32");

will popup a window asking me to select a program to open that file with.

また、あるシステムでコンパイルされた .mexw32/.mexw64 が他のシステムで .exe (実行可能ファイル) と同様に動作する可能性があることにも疑問があります。理由としてはMatlabのリリースバージョンの不一致等が考えられます(よくわからないので一度調べてみてください)

ただし、Mex 実行可能ファイルは Matlab で簡単に使用できます。

于 2013-02-15T10:13:38.553 に答える