在NetBeans上使用Armadillo库编译c ++

时间:2012-06-04 23:09:20

标签: c++ netbeans armadillo

我要编译包含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)

2 个答案:

答案 0 :(得分:3)

我知道这是一个老问题,但最近我遇到了麻烦所以如果有其他人遇到与我相同的问题,我想帮忙。这是如何在64位Windows 7上使用NetBeans C ++设置Armadillo库。

  1. http://arma.sourceforge.net/download.html

  2. 下载最新版本的Armadillo
  3. 将它打包到某个目录中,无论你想要什么。

  4. 转到Netbeans - &gt;项目属性 - &gt; C ++编译器

    3.1包含目录 - &gt;找到您的Armadillo目录并选择文件夹“include”。

    3.2预处理器定义 - &gt; ARMA_USE_LAPACK ARMA_USE_BLAS

  5. 转到Netbeans - &gt;项目属性 - &gt;接头

    4.1附加图书馆目录 - &gt;找到您的Armadillo目录并选择文件夹“examples / lib_win64”。

    4.2附加依赖性 - &gt; lapack_win64_MT.lib blas_win64_MT.lib

  6. 转到项目的文件夹并添加Armadillo / examples / lib_win64中的文件。应添加4个文件 - &gt; blas_win64_MT.dll,blas_win64_MT.lib,lapack_win64_MT.dll和lapack_win64_MT.lib。

  7. 这应该是它。现在你可以在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