【问题标题】:"error LINK2019: unresolved..."“错误 LNK2019:未解决...”
【发布时间】:2013-08-15 16:07:39
【问题描述】:

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

我正在为 64 位版本进行编译,因此我从 here 下载了合适的 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)

谁能告诉我我做错了什么?非常感谢!

【问题讨论】:

  • 确定你在 Project -> (Project Name) Properties -> Linker -> Input 下的 Additional Dependencies 中添加了库?
  • 是的,我在那里引用了 libblas.lib 和 liblapack.lib

标签: c++ visual-studio lapack blas armadillo


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢,示例项目编译成功,但可执行文件没有运行Unable to start program ...example1_win32.exe. The system file cannot find the file specified。谢谢你的链接,我看看它是否有效
  • 按照分步指南工作,非常感谢!
猜你喜欢
  • 2013-11-13
  • 2014-05-12
  • 2014-05-14
  • 1970-01-01
  • 2013-01-31
  • 2012-01-26
  • 1970-01-01
  • 2021-05-06
相关资源
最近更新 更多