2012-01-08 17 views
0

MATLABに行列の逆行列をとるなどの単純な線形演算を実行できるMEXファイルを書くのに問題があります。私はVisual Studio 2010を使用して行列の逆行列を取り除くことに成功し、MEXファイルを正常に作成したので、問題を抱えている唯一のものはこれらの2つの概念を一緒にしています。私はMathWorksサイトから入手したMEXサンプルコードをコンパイルしようとしましたが、運がありません。ここでCLAPACK、BLAS、LAPACKをmexファイルで使用するにはどうしたらいいですか?

は、私が試したもので、

私は拡張子.cとしてMathWorks社からもらった後、MATLABでそれをコンパイルしようとした(これを改称)ファイルを保存した
  1. は得た:

    の作成をライブラリC:¥Users¥CIT¥AppData¥Local¥Temp¥mex_bKHjrl¥templib.x およびオブジェクトC:¥Users¥CIT¥AppData¥Local¥Temp¥mex_bKHjrl¥templib.exp eko1.obj:エラーLNK2019:未解決の外部記号dgesvは、関数mexFunction eko1.mexw64内の を参照しました:致命的なエラーLNK1120:1つの 未解決の外部

  2. はまた、私はそれがmemcpy関数を認識didntのため、しかし、エラーが発生した.cppファイルとしてコンパイルしてみました。

  3. これらは私がしかし、エラーが発生したLAPACKライ​​ブラリからDGETRFとdgetriサブルーチンを使用し、私自身のプログラムを書いた動作しませんでしたので:

    C:\ Users \ユーザーCIT \ドキュメント\ MATLAB \ F2Cを.h(16):エラーC2371: '複合': 再定義;異なる基本形式 C:¥Program Files¥MATLAB¥R2011b¥extern¥include¥lapack.h(39): 'complex'の宣言を参照してください。c:¥users¥cit¥documents¥matlab¥f2c.h(17) :エラーC2371: 'doublecomplex':再定義。 eko2.cpp(29):エラーC2057: 期待される定数式eko2.cpp(29)は、次のように定義されています。 ):エラーC2466:できません 定数サイズ0の配列を割り当てるeko2.cpp(29):エラーC2133: 'ipiv':不明なサイズeko2.cpp(33):エラーC2664: 'dgetrf':できません 変換パラメータ1 'integer *'から 'ptrdiff_t *'へ 指摘された型は無関係です。変換はreinterpret_cast、Cスタイルのキャストまたはファンクションスタイルのキャストが必要です。eko2.cpp(34): エラーC2664: 'dgetri':パラメータ1を 'integer *'から 'ptrdiff_t *'に変換できません。変換はreinterpret_castは、Cスタイルのキャストまたは関数スタイルのキャスト

君たちは私が非常に事前に

おかげでいただければ幸い与える任意の助けを必要とします。

答えて

0

あなたが試したことを見るためのコードはありませんが、わかりにくいですが...他のライブラリに依存するmatlabファイルを適切にコンパイルするには、コンパイルコマンドでこれらのライブラリを指定する必要があります。 mex filename.c -v -l*libraryname*.libを使用してください。 -lスイッチは、コンパイラに含めるライブラリを指定していることを示します。このライブラリが見つからない場合は、ライブラリの完全パスをコマンドに含めます。私はあなたにいくつかの援助を提供することを願っていますこの方法論を使用することは私にとって成功しています。

関連する問題