将Armadillo添加到Qt项目

Adding Armadillo to Qt project

本文关键字:Qt 项目 添加 Armadillo      更新时间:2023-10-16

我正在尝试运行我下载的Armadillo库(5.2)的测试,并且我已经取消了config.hpp文件中的ARMA_USE_LAPACKARMA_USE_BLAS行注释,这是Windows在这里推荐的。我将.pro文件设置为

QT       += core
QT       -= gui
TARGET = armatest
CONFIG   += console
CONFIG   -= app_bundle
TEMPLATE = app
SOURCES += 
    main.cpp
INCLUDEPATH += C:Armadilloinclude
LIBS += -LC:Armadillolib_win64
    -llapack_win64_MT
    -lblas_win64_MT

考虑lapack_win64_MT.libblas_win64_MT.lib是位于C:Armadillolib_win64中的库

我一直收到的错误是

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

等。好像我没有正确地连接图书馆。我错过了什么?

我使用MinGW 4.9.1作为编译器

您缺少LAPACK和BLAS来提供实际的底层线性代数操作。

这在Armadillo FAQ和其他地方都有记录。您可能需要为您的系统重新安装或重建Armadillo;它不随LAPACK和BLAS发货。

我更喜欢的方法是构建一个独立的Armadillo测试程序(也许你已经有了),为Qt构建一个——然后尝试加入构建指令。

编辑:你正在陷入混合使用MinGW和vc++的常见问题。Armadillo网站上清楚地写着

作为礼让,Armadillo包包含预编译的64位版本的LAPACK和BLAS,以及用于编译示例程序的MSVC项目文件。MSVC项目文件在64位Windows 7和Visual c++ 2012上进行了测试。您可能需要针对Windows和/或编译器的新版本进行调整。

不能帮助您使用MinGW。您需要找到MinGW编译的LAPACK和BLAS。

这个问题有两个原因

库是x64的,而我的编译器是32位的(即使我的机器是x64)

LIBS路径必须用反斜杠写

LIBS += 
    -LC:Armadillolib32 
    -lliblapack 
    -llibblas