我要编译包含Armadillo库的C ++程序。 使用此命令通过命令行可以解决此问题:
g++ '/arm.cpp' -o example -O1 -larmadillo
但是当我将-O1 -larmadillo添加到我的NetBeans项目的编译选项中时,我收到了相当多的错误。
我收到了这些错误:
"/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
make[1]: Entering directory `/home/atx/NetBeansProjects/armadillo'
"/usr/bin/make" -f nbproject/Makefile-Debug.mk dist/Debug/GNU-Linux-x86/armadillo
make[2]: Entering directory `/home/atx/NetBeansProjects/armadillo'
mkdir -p dist/Debug/GNU-Linux-x86
g++ -O3 -o dist/Debug/GNU-Linux-x86/armadillo build/Debug/GNU-Linux-x86/main.o
build/Debug/GNU-Linux-x86/main.o: In function `gemv<double>':
/usr/include/armadillo_bits/blas_wrapper.hpp:79: undefined reference to `wrapper_dgemv_'
/usr/include/armadillo_bits/blas_wrapper.hpp:79: undefined reference to `wrapper_dgemv_'
/usr/include/armadillo_bits/blas_wrapper.hpp:79: undefined reference to `wrapper_dgemv_'
/usr/include/armadillo_bits/blas_wrapper.hpp:79: undefined reference to `wrapper_dgemv_'
build/Debug/GNU-Linux-x86/main.o: In function `gemm<double>':
/usr/include/armadillo_bits/blas_wrapper.hpp:114: undefined reference to `wrapper_dgemm_'
/usr/include/armadillo_bits/blas_wrapper.hpp:114: undefined reference to `wrapper_dgemm_'
/usr/include/armadillo_bits/blas_wrapper.hpp:114: undefined reference to `wrapper_dgemm_'
/usr/include/armadillo_bits/blas_wrapper.hpp:114: undefined reference to `wrapper_dgemm_'
collect2: ld returned 1 exit status
make[2]: *** [dist/Debug/GNU-Linux-x86/armadillo] Error 1
make[2]: Leaving directory `/home/atx/NetBeansProjects/armadillo'
make[1]: *** [.build-conf] Error 2
make[1]: Leaving directory `/home/atx/NetBeansProjects/armadillo'
make: *** [.build-impl] Error 2
BUILD FAILED (exit value 2, total time: 136ms)
答案 0 :(得分:3)
我知道这是一个老问题,但最近我遇到了麻烦所以如果有其他人遇到与我相同的问题,我想帮忙。这是如何在64位Windows 7上使用NetBeans C ++设置Armadillo库。
将它打包到某个目录中,无论你想要什么。
转到Netbeans - &gt;项目属性 - &gt; C ++编译器
3.1包含目录 - &gt;找到您的Armadillo目录并选择文件夹“include”。
3.2预处理器定义 - &gt; ARMA_USE_LAPACK ARMA_USE_BLAS
转到Netbeans - &gt;项目属性 - &gt;接头
4.1附加图书馆目录 - &gt;找到您的Armadillo目录并选择文件夹“examples / lib_win64”。
4.2附加依赖性 - &gt; lapack_win64_MT.lib blas_win64_MT.lib
转到项目的文件夹并添加Armadillo / examples / lib_win64中的文件。应添加4个文件 - &gt; blas_win64_MT.dll,blas_win64_MT.lib,lapack_win64_MT.dll和lapack_win64_MT.lib。
这应该是它。现在你可以在C ++中使用Armadillo库,只需添加你的cpp #include,如果你想使用名称空间arma;
我希望这有用!干杯!
答案 1 :(得分:2)
看起来您的Armadillo安装不完整,或者您安装了两个版本的Armadillo。我建议您手动卸载任何以前版本的Armadillo(包括和运行时库),然后使用刚下载的Armadillo .tar.gz包进行全新安装:http://arma.sourceforge.net/download.html
或者,您可以解决您遇到的问题。编辑“include / armadillo_bits / config.hpp”并使用ARMA_USE_WRAPPER注释掉该行。然后,不要与-larmadillo链接,而是链接-lblas -llapack