次のようなC++ファイルがあります。
- matlabエンジンを起動します
- 呼び出し
matlab_optimize()
(matlabオプティマイザーの1つを内部で実行するコンパイル済みのmファイル) - 結果を出力します
- エンジンを停止して終了します
これは正常に機能します。2行目を次のように変更します
- 呼び出し
matlab_optimize(obj_fun)
obj_fun()
それ自体が他のコードにコールバックする私のC++コードで定義された関数はどこにありますか。基本的に、内部で使用されるmatlabオプティマイザーでmatlab_optimize
、提供された関数ポインターを目的関数として使用する必要があります。
obj_fun()
matlabエンジン(すべてを駆動する)を起動するc ++プロセスと通信したいので、スタンドアロンのmexファイルとしてコンパイルすることはできません。
2009年のニュースグループの投稿は、これが不可能であることを示しているようです。次に、Matlab C ++ MathLibraryToolboxはこれを実行できるようです。
グーグルで回ると、この生成されたスニペットも表示されます。
/*
* Register a function pointer as a MATLAB-callable function.
*/
extern void mexRegisterFunction(void);
これはまさに私が望んでいることのようですが、ファイルは2000年のものであり、matlabのドキュメントにはこの関数への参照がどこにもありません。では、これをどのように使用するのですか?