将Armadillo添加到Qt项目中

时间:2015-06-08 16:02:07

标签: c++ qt gcc linker armadillo

我正在尝试为我下载的Armadillo库(5.2)运行测试,并且我已根据Windows的建议取消注释ARMA_USE_LAPACK文件中的行ARMA_USE_BLASconfig.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.libblas_win64_MT.libC:\Armadillo\lib_win64\

中的库

我一直收到的错误是

undefined reference to 'dgetrf_'
undefined reference to 'ddot_'
undefined reference to 'dgemv_'

等。好像我没有正确链接库。我错过了什么?

我使用MinGW 4.9.1作为编译器

2 个答案:

答案 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