0

C++ で記述された Visual Studio 2012 を使用してテスト プログラムをコンパイルしようとしています。このプログラムは、Armadillo 線形代数ライブラリを使用して任意の行列の逆数を計算します。これには、Armadillo のファイルで LAPACK を有効config.hにし、プロジェクトのプロパティでライブラリ/dll にリンクする必要があります (これは実行済みです)。

私は 64 ビット リリース用にコンパイルしているので、ここから適切な BLAS/LAPACK ライブラリをダウンロードし、VS プロジェクトをそれらに対してリンクしました。これをすべて実行しても、次のように Armadillo のinv(...)メソッドを使用しようとすると、まだリンク エラーが発生します。

1>Matrix.obj : error LNK2019: unresolved external symbol dgetrf_ referenced in function "public: static double __cdecl arma::auxlib::det_lapack<double>(class arma::Mat<double> const &,bool)" (??$det_lapack@N@auxlib@arma@@SANAEBV?$Mat@N@1@_N@Z)
1>Matrix.obj : error LNK2019: unresolved external symbol dgetri_ referenced in function "void __cdecl arma::lapack::getri<double>(long *,double *,long *,long *,double *,long *,long *)" (??$getri@N@lapack@arma@@YAXPEAJPEAN00100@Z)

誰かが私が間違っていることについて少し指摘できますか? よろしくお願いします!

4

1 に答える 1

1

Armadillo で提供されるサンプルは、すぐにコンパイルできるはずです。examples/example1_win32 フォルダーにあるプロジェクト ファイルを開きます。コードの開始点として単純に使用することもできます。

あるいは、次のサイトが役に立つかもしれません: Armadillo with BLAS and LAPACK in 64 bit Visual C++ projects

64 ビット LAPACK および BLAS を使用すると、32 ビット バージョンよりもかなり高速になります。LAPACK の高速マルチコア実装を提供するインテル® MKL の使用を検討することもできます。

于 2013-08-16T04:05:27.397 に答える