Почему я получаю ошибки при установке предварительно скомпилированных версий LAPACK в Windows?

StackOverflow https://stackoverflow.com/questions/2324362

Вопрос

Я пытаюсь использовать матричную библиотеку Armadillo для матричных вычислений, и для этого нужны 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>Linking...  
1>LINK : warning LNK4076: invalid incremental status file 'C:\Users\User\Documents\Visual Studio 2008\Projects\TentPitcher\Debug\TentPitcher.ilk'; linking nonincrementally  
1>   Creating library C:\Users\User\Documents\Visual Studio 2008\Projects\TentPitcher\Debug\TentPitcher.lib and object C:\Users\User\Documents\Visual Studio 2008\Projects\TentPitcher\Debug\TentPitcher.exp  
1>Cell3DXT.obj : error LNK2019: unresolved external symbol _zgetrf_ referenced in function "void __cdecl arma::lapack::getrf_(int *,int *,double *,int *,int *,int *)" (??$getrf_@N@lapack@arma@@YAXPAH0PAN000@Z)  
1>ThreeCell3DXT.obj : error LNK2001: unresolved external symbol _zgetrf_  
1>Cell3DXT.obj : error LNK2019: unresolved external symbol _cgetrf_ referenced in function "void __cdecl arma::lapack::getrf_(int *,int *,double *,int *,int *,int *)" (??$getrf_@N@lapack@arma@@YAXPAH0PAN000@Z)  
1>ThreeCell3DXT.obj : error LNK2001: unresolved external symbol _cgetrf_  
1>Cell3DXT.obj : error LNK2019: unresolved external symbol _dgetrf_ referenced in function "void __cdecl arma::lapack::getrf_(int *,int *,double *,int *,int *,int *)" (??$getrf_@N@lapack@arma@@YAXPAH0PAN000@Z)
1>ThreeCell3DXT.obj : error LNK2001: unresolved external symbol _dgetrf_
1>Cell3DXT.obj : error LNK2019: unresolved external symbol _sgetrf_ referenced in function "void __cdecl arma::lapack::getrf_(int *,int *,double *,int *,int *,int *)" (??$getrf_@N@lapack@arma@@YAXPAH0PAN000@Z)
1>ThreeCell3DXT.obj : error LNK2001: unresolved external symbol _sgetrf_
1>Cell3DXT.obj : error LNK2019: unresolved external symbol _zgemv_ referenced in function "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 : error LNK2001: unresolved external symbol _zgemv_
1>TwoCell3DXT.obj : error LNK2001: unresolved external symbol _zgemv_
1>Cell3DXT.obj : error LNK2019: unresolved external symbol _cgemv_ referenced in function "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 : error LNK2001: unresolved external symbol _cgemv_
1>TwoCell3DXT.obj : error LNK2001: unresolved external symbol _cgemv_
1>Cell3DXT.obj : error LNK2019: unresolved external symbol _dgemv_ referenced in function "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 : error LNK2001: unresolved external symbol _dgemv_
1>TwoCell3DXT.obj : error LNK2001: unresolved external symbol _dgemv_
1>Cell3DXT.obj : error LNK2019: unresolved external symbol _sgemv_ referenced in function "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 : error LNK2001: unresolved external symbol _sgemv_
1>TwoCell3DXT.obj : error LNK2001: unresolved external symbol _sgemv_
1>Cell3DXT.obj : error LNK2019: unresolved external symbol _zgemm_ referenced in function "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 : error LNK2001: unresolved external symbol _zgemm_  
1>TwoCell3DXT.obj : error LNK2001: unresolved external symbol _zgemm_  
1>Cell3DXT.obj : error LNK2019: unresolved external symbol _cgemm_ referenced in function "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 : error LNK2001: unresolved external symbol _cgemm_  
1>TwoCell3DXT.obj : error LNK2001: unresolved external symbol _cgemm_  
1>Cell3DXT.obj : error LNK2019: unresolved external symbol _dgemm_ referenced in function "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 : error LNK2001: unresolved external symbol _dgemm_  
1>TwoCell3DXT.obj : error LNK2001: unresolved external symbol _dgemm_  
1>Cell3DXT.obj : error LNK2019: unresolved external symbol _sgemm_ referenced in function "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 : error LNK2001: unresolved external symbol _sgemm_  
1>TwoCell3DXT.obj : error LNK2001: unresolved external symbol _sgemm_  
1>Cell3DXT.obj : error LNK2019: unresolved external symbol _zgetri_ referenced in function "void __cdecl arma::lapack::getri_(int *,double *,int *,int *,double *,int *,int *)" (??$getri_@N@lapack@arma@@YAXPAHPAN00100@Z)  
1>ThreeCell3DXT.obj : error LNK2001: unresolved external symbol _zgetri_  
1>Cell3DXT.obj : error LNK2019: unresolved external symbol _cgetri_ referenced in function "void __cdecl arma::lapack::getri_(int *,double *,int *,int *,double *,int *,int *)" (??$getri_@N@lapack@arma@@YAXPAHPAN00100@Z)  
1>ThreeCell3DXT.obj : error LNK2001: unresolved external symbol _cgetri_  
1>Cell3DXT.obj : error LNK2019: unresolved external symbol _dgetri_ referenced in function "void __cdecl arma::lapack::getri_(int *,double *,int *,int *,double *,int *,int *)" (??$getri_@N@lapack@arma@@YAXPAHPAN00100@Z)  
1>ThreeCell3DXT.obj : error LNK2001: unresolved external symbol _dgetri_  
1>Cell3DXT.obj : error LNK2019: unresolved external symbol _sgetri_ referenced in function "void __cdecl arma::lapack::getri_(int *,double *,int *,int *,double *,int *,int *)" (??$getri_@N@lapack@arma@@YAXPAHPAN00100@Z)  
1>ThreeCell3DXT.obj : error LNK2001: unresolved external symbol _sgetri_  
1>TwoCell3DXT.obj : error LNK2019: unresolved external symbol _dgesvd_ referenced in function "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 : error LNK2019: unresolved external symbol _sgesvd_ referenced in function "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 : fatal error LNK1120: 18 unresolved externals  
1>Build log was saved at "file://c:\Users\User\Documents\Visual Studio 2008\Projects\TentPitcher\TentPitcher\Debug\BuildLog.htm"  
1>TentPitcher - 43 error(s), 1 warning(s)

"Cell3DXT", "TwoCell3DXT", и "ThreeCell3DXT" — это классы в моем собственном коде.Также в приведенных выше файлах LAPACK и BLAS есть файлы «.exp» — что это такое и имеют ли они какое-то отношение к проблеме?

Это было полезно?

Решение

Я нашел ответ на свою проблему.Проблема заключалась в том, что я знал, что мне нужно поместить каталог, содержащий файл LAPACK .lib, в список каталогов библиотеки (Инструменты -> Параметры -> Проекты и решения -> Каталоги VC++ -> Файлы библиотеки), но забыл, что мне также пришлось это сделать. добавьте его в «Дополнительные зависимости» в разделе «Проект» -> «Свойства (имя проекта)» -> «Компоновщик» -> «Ввод».

Другие советы

У меня была такая же проблема, но я решил ее следующим образом:

  1. загрузите и извлеките LAPACK (LIB+DLL) и BLASS (LIB+DLL) с сайта победителя,
  2. Добавьте пути LAPACK и BLASS в каталоги поиска компоновщика, например «Project->Build Options->Search Directory->Linker» в Code::Blocks,
  3. Добавьте lapack_win32.lib в настройки компоновщика,
  4. Раскомментируйте `#define ARMA_USE_LAPACK' в [Armadillo PATH]/include/armadillo_bits/config.hpp.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top