使用犰狳库时如何解决编译问题

Posted

技术标签:

【中文标题】使用犰狳库时如何解决编译问题【英文标题】:How to solve the compiling problems when I use armadillo library' 【发布时间】:2020-04-04 00:03:02 【问题描述】:

我是 C++ 新手,我尝试使用 Armadillo 来查找对称矩阵的特征值(eig_sym 是函数的名称)。我使用了'g++ -std=c++14 main.cpp -o app -O2 -larmadillo -llapack -lbas',退出是

错误:“eig_sym”未在此范围内声明 eig_sym(eigval,一); ^ eigval_sym.cpp:44:21:注意:建议的替代方案: 在 /usr/include/armadillo:443:0 包含的文件中, 来自 main.cpp:6: /usr/include/armadillo_bits/fn_eig_sym.hpp:118:1:注意:'arma::eig_sym'

,但是在 main.cpp 文件中我写了 #include 。什么时候失败?可能是找不到库路径?

【问题讨论】:

从错误消息中,它在您的.cpp 中找不到eig_sym 的声明,并建议arma::eig_sym。添加缺少的范围,然后重试。 只需#include <armadillo> 就足够了。它真的能找到犰狳头吗? 【参考方案1】:

只需#include <armadillo> 就足以从犰狳库中获取所有功能,但请注意犰狳中的所有内容都在arma namespace 中。因此,您需要在 cpp 文件中添加 using namespace arma; 或在犰狳中的所有函数和类前面加上 arma::。也就是说,使用arma::eig_sym 而不是只使用eig_sym 或添加using 指令并继续只写eig_sym

这与标准库的操作相同,标准库位于命名空间std 中。您需要写std::cout 而不仅仅是cout,除非您添加using namespace std;

【讨论】:

以上是关于使用犰狳库时如何解决编译问题的主要内容,如果未能解决你的问题,请参考以下文章

如何在编译期间强制犰狳库链接到本地​​ OpenBLAS

使用自制软件在 macOS 上安装犰狳

使用 PGI 编译器链接到犰狳库的 Makefile

交叉编译犰狳线性代数库

编译犰狳时出错

ubuntu中的犰狳问题