3

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

2 回答 2

3

看起来您的犰狳安装不完整,或者您安装了两个版本的犰狳。我建议您手动卸载任何以前版本的犰狳(包括包含和运行时库),然后使用新下载的犰狳 .tar.gz 包进行全新安装:http: //arma.sourceforge.net/下载.html

或者,您可以解决您遇到的问题。编辑“include/armadillo_bits/config.hpp”并用 ARMA_USE_WRAPPER 注释掉该行。然后,不是与 -larmadillo 链接,而是与 -lblas -llapack 链接

于 2012-06-13T04:26:43.650 回答
3

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

  1. 从http://arma.sourceforge.net/download.html下载最新版本的犰狳

  2. 将其解压缩到某个目录中,无论您想要什么。

  3. 转到 Netbeans -> 项目属性 -> C++ 编译器

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

    3.2 预处理器定义 -> ARMA_USE_LAPACK ARMA_USE_BLAS

  4. 转到 Netbeans -> 项目属性 -> 链接器

    4.1 附加库目录 -> 找到您的 Armadillo 目录并选择文件夹“examples/lib_win64”。

    4.2 附加依赖 -> lapack_win64_MT.lib blas_win64_MT.lib

  5. 转到您的项目文件夹并从 Armadillo/examples/lib_win64 添加文件。应添加 4 个文件 -> blas_win64_MT.dll、blas_win64_MT.lib、lapack_win64_MT.dll 和 lapack_win64_MT.lib。

这应该是它。现在您可以在 C++ 中使用 Armadillo 库,只需添加您的 cpp #include 并且如果您想使用命名空间 arma;

我希望这可以帮到你!干杯!

于 2017-01-10T13:46:32.590 回答