逆行列を取るなどの単純な線形演算を実行できる MATLAB で MEX ファイルを作成するのに問題があります。Visual Studio 2010 を使用して逆行列を取得し、MEX ファイルを正常に作成できたので、これら 2 つの概念をまとめることだけが問題です。MathWorks サイトから入手した MEX サンプル コードをコンパイルしようとしましたが、うまくいきませんでした。
これが私が試したことです、
MathWorks から取得したファイルを .c 拡張子として保存 (名前を変更) し、MATLAB でコンパイルしようとしました。
ライブラリ C:\Users\CIT\AppData\Local\Temp\mex_bKHjrl\templib.x およびオブジェクト C:\Users\CIT\AppData\Local\Temp\mex_bKHjrl\templib.exp eko1.obj の作成: エラー LNK2019: 未解決の外部シンボル関数 mexFunction eko1.mexw64 で参照されている dgesv: 致命的なエラー LNK1120: 1 つの未解決の外部
また、.cpp ファイルとしてコンパイルしようとしましたが、memcpy 関数を認識しなかったためにエラーが発生しました。
これらが機能しなかったので、LAPACK ライブラリのサブルーチン dgetrf と dgetri を使用する独自のプログラムを作成しましたが、エラーが発生しました。
c:\users\cit\documents\matlab\f2c.h(16): エラー C2371: 'complex': 再定義; 異なる基本型 C:\Program Files\MATLAB\R2011b\extern\include\lapack.h(39) : 「complex」の宣言を参照 c:\users\cit\documents\matlab\f2c.h(17) : エラー C2371 : 'doublecomplex' : 再定義; 異なる基本型 C:\Program Files\MATLAB\R2011b\extern\include\lapack.h(40) : 'doublecomplex' の宣言を参照 eko2.cpp(29) : エラー C2057: 期待される定数式 eko2.cpp(29) :エラー C2466: 定数サイズ 0 の配列を割り当てることができません。 'ptrdiff_t *' へ 指す型は無関係です。変換には reinterpret_cast が必要です。C スタイルのキャストまたは関数スタイルのキャスト eko2.cpp(34): エラー C2664: 'dgetri': パラメーター 1 を 'integer *' から 'ptrdiff_t *' に変換できません。変換には reinterpret_cast、C スタイルのキャスト、または関数スタイルのキャストが必要です
皆さんが私に与えてくれるどんな助けも非常に高く評価されます
前もって感謝します。