2セットのコードがあります。
- MATLABコード、および
- QT C ++コード。
私はMATLABコードをC ++ライブラリにコンパイルしようとしました mcc
msvc2008コンパイラを使用したコマンド。 QT C ++コードの場合、mingwを使用してコンパイルします。しかし、MATLAB変換C ++コードを追加しようとすると、多くの問題があるようです。
これらの2種類のコードを混在させることはできますか?これらの言語の組み合わせを使用した経験はありますか?
! Octaveを使用しようとしましたが、MATLABコードをコーディングし直したくありません。 MATLABコードを直接実行する代替手段を探しています。
注意: QTではmingwを使用する必要がありますが、これはmatlab mccコマンドの要件であり、msvcコンパイラーを使用するしかありません。移植性のためにプログラムをスタンドアロンとして作成できれば最高です。私がMATLABコードを使用する必要がある理由は、私が必要とするいくつかの素晴らしい行列数学操作関数があり、またMATLABを使用して研究を行うことがより簡単だからです。
回答:
回答№1は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プロジェクトに共有ライブラリとヘッダーの両方を追加する必要があります。
回答№2の場合は1
typedefを追加してmxInt64とmxUint64を修正し、コードが64バイト長の符号付きおよび符号なし整数として認識できるようにしました。