我正在尝试使用犰狳矩阵库来进行矩阵计算,它需要 BLAS 和 LAPACK。Armadillo 文档建议从http://www.stanford.edu/~vkl/code/libs.html获取预编译版本
里面有 .lib 和 .dll 文件。唯一的问题是我不知道如何让 Visual Studio (Express Edition 2008) 识别这些文件。我尝试将它们复制到 Visual C++ 的 include 和 lib 目录C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\
和C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\lib\
,但它似乎没有做任何事情,因为当我尝试编译我的程序时,我得到很多“无法解析的外部符号”错误,说它找不到LAPACK 函数。
编辑:
以下是错误消息:
1>链接... 1>LINK : 警告 LNK4076: 无效的增量状态文件 'C:\Users\User\Documents\Visual Studio 2008\Projects\TentPitcher\Debug\TentPitcher.ilk'; 非增量链接 1> 创建库 C:\Users\User\Documents\Visual Studio 2008\Projects\TentPitcher\Debug\TentPitcher.lib 和对象 C:\Users\User\Documents\Visual Studio 2008\Projects\TentPitcher\Debug\TentPitcher.exp 1>Cell3DXT.obj:错误 LNK2019:函数“void __cdecl arma::lapack::getrf_(int *,int *,double *,int *,int *,int *)”中引用的未解析外部符号 _zgetrf_ (??$ getrf_@N@lapack@arma@@YAXPAH0PAN000@Z) 1>ThreeCell3DXT.obj:错误LNK2001:无法解析的外部符号_zgetrf_ 1>Cell3DXT.obj:错误 LNK2019:函数“void __cdecl arma::lapack::getrf_(int *,int *,double *,int *,int *,int *)”中引用的未解析外部符号 _cgetrf_ (??$ getrf_@N@lapack@arma@@YAXPAH0PAN000@Z) 1>ThreeCell3DXT.obj:错误LNK2001:无法解析的外部符号_cgetrf_ 1>Cell3DXT.obj:错误 LNK2019:未解析的外部符号 _dgetrf_ 在函数“void __cdecl arma::lapack::getrf_(int *,int *,double *,int *,int *,int *)”中引用 (??$ getrf_@N@lapack@arma@@YAXPAH0PAN000@Z) 1>ThreeCell3DXT.obj:错误LNK2001:无法解析的外部符号_dgetrf_ 1>Cell3DXT.obj:错误 LNK2019:函数“void __cdecl arma::lapack::getrf_(int *,int *,double *,int *,int *,int *)”中引用的未解析外部符号 _sgetrf_ (??$ getrf_@N@lapack@arma@@YAXPAH0PAN000@Z) 1>ThreeCell3DXT.obj:错误LNK2001:无法解析的外部符号_sgetrf_ 1>Cell3DXT.obj:错误 LNK2019:未解析的外部符号 _zgemv_ 在函数“void __cdecl arma::blas::gemv_(char const *,int const *,int const *,double const *,double const *,int const * ,double const *,int const *,double const *,double *,int const *)" (??$gemv_@N@blas@arma@@YAXPBDPBH1PBN21212PAN1@Z) 1>ThreeCell3DXT.obj:错误LNK2001:无法解析的外部符号_zgemv_ 1>TwoCell3DXT.obj : 错误 LNK2001: 无法解析的外部符号 _zgemv_ 1>Cell3DXT.obj:错误 LNK2019:未解析的外部符号 _cgemv_ 在函数“void __cdecl arma::blas::gemv_(char const *,int const *,int const *,double const *,double const *,int const * ,double const *,int const *,double const *,double *,int const *)" (??$gemv_@N@blas@arma@@YAXPBDPBH1PBN21212PAN1@Z) 1>ThreeCell3DXT.obj:错误LNK2001:无法解析的外部符号_cgemv_ 1>TwoCell3DXT.obj:错误 LNK2001:无法解析的外部符号 _cgemv_ 1>Cell3DXT.obj:错误 LNK2019:未解析的外部符号 _dgemv_ 在函数“void __cdecl arma::blas::gemv_(char const *,int const *,int const *,double const *,double const *,int const * ,double const *,int const *,double const *,double *,int const *)" (??$gemv_@N@blas@arma@@YAXPBDPBH1PBN21212PAN1@Z) 1>ThreeCell3DXT.obj:错误 LNK2001:无法解析的外部符号 _dgemv_ 1>TwoCell3DXT.obj:错误 LNK2001:无法解析的外部符号 _dgemv_ 1>Cell3DXT.obj:错误 LNK2019:未解析的外部符号 _sgemv_ 在函数“void __cdecl arma::blas::gemv_(char const *,int const *,int const *,double const *,double const *,int const * ,double const *,int const *,double const *,double *,int const *)" (??$gemv_@N@blas@arma@@YAXPBDPBH1PBN21212PAN1@Z) 1>ThreeCell3DXT.obj:错误LNK2001:无法解析的外部符号_sgemv_ 1>TwoCell3DXT.obj:错误 LNK2001:无法解析的外部符号 _sgemv_ 1>Cell3DXT.obj:错误 LNK2019:未解析的外部符号 _zgemm_ 在函数“void __cdecl arma::blas::gemm_(char const *,char const *,int const *,int const *,int const *,double const * ,double const *,int const *,double const *,int const *,double const *,double *,int const *)" (??$gemm_@N@blas@arma@@YAXPBD0PBH11PBN21212PAN1@Z) 1>ThreeCell3DXT.obj:错误LNK2001:无法解析的外部符号_zgemm_ 1>TwoCell3DXT.obj : 错误 LNK2001: 无法解析的外部符号 _zgemm_ 1>Cell3DXT.obj:错误 LNK2019:未解析的外部符号 _cgemm_ 在函数“void __cdecl arma::blas::gemm_(char const *,char const *,int const *,int const *,int const *,double const * ,double const *,int const *,double const *,int const *,double const *,double *,int const *)" (??$gemm_@N@blas@arma@@YAXPBD0PBH11PBN21212PAN1@Z) 1>ThreeCell3DXT.obj:错误LNK2001:无法解析的外部符号_cgemm_ 1>TwoCell3DXT.obj:错误 LNK2001:无法解析的外部符号 _cgemm_ 1>Cell3DXT.obj : 错误 LNK2019: 函数 "void __cdecl arma::blas::gemm_(char const *,char const *,int const *,int const *,int const *,double const * ,double const *,int const *,double const *,int const *,double const *,double *,int const *)" (??$gemm_@N@blas@arma@@YAXPBD0PBH11PBN21212PAN1@Z) 1>ThreeCell3DXT.obj:错误LNK2001:无法解析的外部符号_dgemm_ 1>TwoCell3DXT.obj:错误 LNK2001:无法解析的外部符号 _dgemm_ 1>Cell3DXT.obj : 错误 LNK2019: 函数 "void __cdecl arma::blas::gemm_(char const *,char const *,int const *,int const *,int const *,double const * ,double const *,int const *,double const *,int const *,double const *,double *,int const *)" (??$gemm_@N@blas@arma@@YAXPBD0PBH11PBN21212PAN1@Z) 1>ThreeCell3DXT.obj:错误LNK2001:无法解析的外部符号_sgemm_ 1>TwoCell3DXT.obj:错误 LNK2001:无法解析的外部符号 _sgemm_ 1>Cell3DXT.obj:错误LNK2019:函数“void __cdecl arma::lapack::getri_(int *,double *,int *,int *,double *,int *,int *)”中引用的未解析外部符号_zgetri_( ??$getri_@N@lapack@arma@@YAXPAHPAN00100@Z) 1>ThreeCell3DXT.obj:错误LNK2001:无法解析的外部符号_zgetri_ 1>Cell3DXT.obj:错误LNK2019:函数“void __cdecl arma::lapack::getri_(int *,double *,int *,int *,double *,int *,int *)”中引用的未解析外部符号_cgetri_( ??$getri_@N@lapack@arma@@YAXPAHPAN00100@Z) 1>ThreeCell3DXT.obj:错误LNK2001:无法解析的外部符号_cgetri_ 1>Cell3DXT.obj:错误LNK2019:函数“void __cdecl arma::lapack::getri_(int *,double *,int *,int *,double *,int *,int *)”中引用的未解析外部符号_dgetri_( ??$getri_@N@lapack@arma@@YAXPAHPAN00100@Z) 1>ThreeCell3DXT.obj:错误LNK2001:无法解析的外部符号_dgetri_ 1>Cell3DXT.obj:错误 LNK2019:函数“void __cdecl arma::lapack::getri_(int *,double *,int *,int *,double *,int *,int *)”中引用的未解析外部符号 _sgetri_ ( ??$getri_@N@lapack@arma@@YAXPAHPAN00100@Z) 1>ThreeCell3DXT.obj:错误LNK2001:无法解析的外部符号_sgetri_ 1>TwoCell3DXT.obj:错误 LNK2019:未解析的外部符号 _dgesvd_ 在函数“void __cdecl arma::lapack::gesvd_(char *,char *,int *,int *,double *,int *,double *,double * ,int *,double *,int *,double *,int *,int *)" (??$gesvd_@N@lapack@arma@@YAXPAD0PAH1PAN122121211@Z) 1>TwoCell3DXT.obj:错误 LNK2019:函数“void __cdecl arma::lapack::gesvd_(char *,char *,int *,int *,double *,int *,double *,double * ,int *,double *,int *,double *,int *,int *)" (??$gesvd_@N@lapack@arma@@YAXPAD0PAH1PAN122121211@Z) 1>C:\Users\User\Documents\Visual Studio 2008\Projects\TentPitcher\Debug\TentPitcher.exe : 致命错误 LNK1120: 18 unresolved externals 1>构建日志保存在“file://c:\Users\User\Documents\Visual Studio 2008\Projects\TentPitcher\TentPitcher\Debug\BuildLog.htm” 1>TentPitcher - 43 个错误,1 个警告
“ Cell3DXT
”、“ TwoCell3DXT
”和“ ThreeCell3DXT
”是我自己代码中的类。同样在上面的 LAPACK 和 BLAS 文件中,还有“.exp 文件”——它们是什么,它们与问题有关吗?