我正在尝试为我下载的Armadillo库(5.2)运行测试,并且我已根据Windows的建议取消注释ARMA_USE_LAPACK
文件中的行ARMA_USE_BLAS
和config.hpp
here。我已将.pro文件设置为
QT += core
QT -= gui
TARGET = armatest
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += \
main.cpp
INCLUDEPATH += C:\Armadillo\include
LIBS += -LC:\Armadillo\lib_win64
-llapack_win64_MT
-lblas_win64_MT
考虑到lapack_win64_MT.lib
和blas_win64_MT.lib
是C:\Armadillo\lib_win64\
我一直收到的错误是
undefined reference to 'dgetrf_'
undefined reference to 'ddot_'
undefined reference to 'dgemv_'
等。好像我没有正确链接库。我错过了什么?
我使用MinGW 4.9.1作为编译器
答案 0 :(得分:2)
您缺少LAPACK和BLAS来提供实际的基础线性代数运算。
这在Armadillo FAQ等其他地方都有记载。您可能需要为系统重新安装或重建Armadillo;它不附带LAPACK和BLAS。
我首选的方法是构建一个独立的Armadillo测试程序(也许你已经拥有),为Qt构建一个 - 然后尝试加入构建指令。
编辑:您正在解决混合MinGW和VC ++的常见问题。犰狳网站明确表示
作为礼貌,Armadillo软件包包含预编译的64位版本的LAPACK和BLAS,以及用于编译示例程序的MSVC项目文件。 MSVC项目文件在64位Windows 7上使用Visual C ++ 2012进行了测试。您可能需要对更高版本的Windows和/或编译器进行调整。
这对MinGW没有帮助。你需要找到MinGW编译的LAPACK和BLAS。
答案 1 :(得分:0)
问题是由于两个原因
库是x64,我的编译器是32位(即使我的机器是x64)
LIBS路径必须用反斜杠写
LIBS += \
-LC:\Armadillo\lib32 \
-lliblapack \
-llibblas