如何将Armadillo与Eclipse相关联

时间:2015-05-27 23:06:57

标签: eclipse linker armadillo

我想在Eclipse中使用Armadillo。但是,为Visual Studio提供了链接Armadillo的所有说明。现在我按照Armadillo library的自述文件中列出的说明进行操作。我在project(right click)->properties->C/C++ Build->Settings->Cross G++ Compiler->Includes->Inlcude paths(-I)中添加了Armadillo include文件夹,然后在project(right click)->properties->C/C++ Build->Settings->Cross G++ Linker->Libraries->Library search path (-L)中添加了libraries文件夹(库文件夹包含lapack和blas .lib和.dll文件)。

然而,当我在Eclipse中编译代码时,我得到了错误

  

..... armadillo_bits / lapack_wrapper.hpp:37:对'dgetrf _'的未定义引用。

它不应该只是在库文件夹中搜索.lib文件并在编译期间包含它们吗?对于此事,我将不胜感激。

此致 TM

3 个答案:

答案 0 :(得分:2)

将Armadillo库链接到Eclipse项目可以完成,您即将完成!它几乎和其他任何库一样。

在项目的属性中:

  • GCC C ++编译器 - >包括:将文件路径armadillo(声明名称空间为arma)添加到包含搜索路径(选项-I)。示例:/home/alpha/soft/armadillo-4.400.1/include

  • GCC C ++ Linker - >库:在库搜索路径中添加文件libarmadillo.so...的路径(选项-L)示例:/home/alpha/soft/armadillo-4.400.1。将armadillolapackblasm添加为库(选项-l)。 m is for math

以下是eclipse生成的对编译器和链接器的调用:

make all 
Building file: ../src/armaeclip.cpp
Invoking: GCC C++ Compiler
g++ -I/home/alpha/soft/armadillo-4.100.1/include -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/armaeclip.d" -MT"src/armaeclip.d" -o "src/armaeclip.o" "../src/armaeclip.cpp"
Finished building: ../src/armaeclip.cpp



Building target: armaeclip
Invoking: GCC C++ Linker
g++ -L/home/alpha/soft/armadillo-4.100.1 -o "armaeclip" ./src/armaeclip.o   -larmadillo -lblas -lm -llapack
Finished building target: armaeclip
**** Build Finished ****

在运行代码时,您可能会得到类似的内容:

  

错误:det():需要启用ATLAS或LAPACK   在抛出'std :: logic_error'的实例后终止调用     what():det():需要启用ATLAS或LAPACK的使用   放弃(核心倾销)

要避免此问题,请按照文件#define ARMA_USE_LAPACKfaq of Armadillo:取消注释/home/alpha/soft/armadillo-4.100.1/include/config.hpp的建议,重建项目。

答案 1 :(得分:0)

您还可以创建GNU Autotools项目并添加以下行:

bin_PROGRAMS=armadillo_example
armadillo_example_SOURCES=armadillo_example.cpp
armadillo_example_LDADD=-larmadillo

到存在源代码的Makefile.am文件。

答案 2 :(得分:0)

如果您不需要优化的BLAS库,则可以使用Armadillo随附的BLAS和LAPACK库。

  1. 项目属性> C / C ++构建>设置> GCC C ++编译器> 包含>包含路径(-l):C:\armadillo-x.xxx.x\include
  2. 然后在“环境变量”>“系统变量”中,修改路径 变量并添加:C:\armadillo-x.xxx.x\examples\lib_win64\
  3. 项目属性> C / C ++常规>路径和符号>库: blas_win64_MTlapack_win64_MT(添加它们很重要 这样,没有路径或.lib / .dll)

  4. 然后在“环境变量”>“系统变量”中,修改路径 变量并添加:C:\armadillo-x.xxx.x\examples\lib_win64\

使用Eclipse中的Armadillo库很不错。

我已经使用了Eclipse 4.14.0和Armadillo 9.850.1。