2014-09-19 37 views
0

我正在使用MinGW32和OpenBLAS编译Windows 32下的Armadillo C++库。在编译/链接期间无法禁用Armadillo包装

我已经尝试了每个教程和stackoverflow.com问题的主题,但仍似乎无法禁用wrapper.obj,它会产生链接错误的编译“未定义引用到`sdot_'”等等。这些是包装器无法找到的BLAS符号。

我没有安装其他BLAS/LAPACK库,并在cmake输出它确认已找到libopenblas.dll。

如何禁用wrapper.obj的编译和链接?编辑config.hpp不起作用。

回答

2

您不必使用基于cmake的安装程序来使用Armadillo。安装程序只需创建与BLAS和LAPACK链接的包装库。您可以改为直接链接基于犰狳的程序与BLAS和LAPACK:

g++ prog.cpp -o prog -O2 -I armadillo-4.500.0/include -DARMA_DONT_USE_WRAPPER -DARMA_USE_BLAS -DARMA_USE_LAPACK -lblas -llapack 

变化armadillo-4.500.0/include以地步犰狳包括文件夹所在。

+0

我不需要首先编译/链接犰狳吗?我不确定我是否理解,对不起。在这个阶段,我实际上无法编译/链接Armadillo,它不接受我可以提供的任何BLAS/LAPACK库的符号。我也尝试过OpenBLAS,但没有成功。 – lsdavies 2014-09-24 00:13:21

+0

Armadillo首先是一个模板库(即只有C++头文件)。模板库不需要传统意义上的编译。 Armadillo的第二个和可选部分是运行时库,它只是BLAS和LAPACK的组合包装器。您可以使用Armadillo标题而不使用运行时库。如上所述,直接连接LAPACK和BLAS。 – mtall 2014-09-24 10:33:57