0

私は2セットのコードを持っています:

  • MATLAB コード、および
  • QT C++ コード。

mccmsvc2008 コンパイラでコマンドを使用して、MATLAB コードを C++ ライブラリにコンパイルしようとしました。私の QT C++ コードでは、mingw を使用してコンパイルしています。しかし、MATLAB で変換された C++ コードを追加しようとすると、多くの問題が発生するようです。

これら 2 種類のコードを混在させることはできますか? これらの言語を組み合わせて使用​​した経験のある人はいますか?

! Octave を使用しようとしましたが、MATLAB コードを再コーディングしたくありません。MATLAB コードを直接実行する代替手段を探しています。

注意: QT で mingw を使用する必要があるのは要件であり、matlab mcc コマンドの場合、msvc コンパイラを使用する選択肢しかありません。移植性のためにプログラムをスタンドアロンとして作成できれば最高です。MATLAB コードを使用する必要がある理由は、必要な優れた行列数学操作関数がいくつかあるためです。また、MATLAB を使用すると研究が容易になるためです。

4

2 に答える 2

4

を使用して matlab コードをコンパイルするとmcc(既定で、または を使用する場合-m option)、実行可能ファイルが取得されます。したがって、C++ ファイルから、C/C++ コマンドを使用して matlab 実行可能ファイルを呼び出すことができますexec

-l option(を使用して)を使用するmccと、共有ライブラリとヘッダーが得られます。たとえば、(matlab で) 次のように入力した場合:

mcc -l test.m -W cpplib:test.h

これにより、共有ライブラリtest.libまたはtest.so、およびヘッダーが生成されます。test.h

test.hのような行が必要です。

bool MW_CALL_CONV mlxTest(int nlhs, mxArray *plhs[], int nrhs, mxArray *prhs[]);

それを使用して matlab 関数を呼び出すことができます。

さらに、msvc プロジェクトに共有ライブラリとヘッダーの両方を追加する必要があります。

于 2012-01-11T11:14:17.647 に答える
1

コードがこれらを 64 バイト長の符号付きおよび符号なし整数として認識できるように typedef を追加して、mxInt64 と mxUint64 を修正しました。

于 2012-12-12T16:10:37.057 に答える