Я пытаюсь скомпилировать тестовую программу с использованием Visual Studio 2012, написанной на C ++, программа вычисляет обратное значение произвольной матрицы, используя Армадилло линейная алгебра библиотека. Для этого необходимо включить LAPACK в Armadillo config.h
файл и ссылка на библиотеки / библиотеки в свойствах проекта (что я и сделал).
Я компилирую для 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)
Кто-нибудь может дать мне небольшое указание на то, что я делаю неправильно? Спасибо заранее!
Примеры, предоставленные с Armadillo, должны быть собраны из коробки. Откройте файлы проекта в папке examples / example1_win32. Вы можете просто использовать их в качестве отправной точки для вашего кода.
В качестве альтернативы этот сайт может быть полезен: Броненосец с BLAS и LAPACK в 64-битных проектах Visual C ++
Использование 64-битных LAPACK и BLAS значительно быстрее, чем 32-битных версий. Вы также можете захотеть использовать Intel MKL, который обеспечивает высокоскоростную многоядерную реализацию LAPACK.
Других решений пока нет …