0

我正在尝试使用用 C++ 编写的 Visual Studio 2012 编译一个测试程序,该程序使用犰狳线性代数库计算任意矩阵的逆。这要求您在 Armadillo 的config.h文件中启用 LAPACK 并链接到项目属性中的库/dll(我已经完成)。

我正在为 64 位版本编译,所以我从这里下载了合适的 BLAS/LAPACK 库,并将 VS 项目与它们链接起来。完成所有这些后,我在尝试使用犰狳的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

犰狳提供的示例应该开箱即用。打开示例/example1_win32 文件夹中的项目文件。您可能只想将它们用作代码的起点。

或者,此站点可能有用:Armadillo with BLAS and LAPACK in 64 bit Visual C++ projects

使用 64 位 LAPACK 和 BLAS 比 32 位版本快得多。您可能还想考虑使用英特尔 MKL,它提供了 LAPACK 的高速多核实施。

于 2013-08-16T04:05:27.397 回答