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



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

错误:未在此作用域中声明"eig_sym"eig_sym(eigval,A(;^eigval_sym.cpp:44:21:注:建议备选方案:在/usr/include/aarmadillo:443:0中包含的文件中,来自main.cpp:6:/usr/include/aarmadillo_bits/fn_eig_sym.hp:118:1:注意:"arma::eig_sym">

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

#include <armadillo>就足以从armadillo库中获得所有功能,但请注意armadillo中的所有内容都在arma命名空间中。因此,您需要在cpp文件中添加using namespace arma;,或者用arma::为armadillo中的所有函数和类做准备。也就是说,使用arma::eig_sym而不是仅使用eig_sym,或者添加using指令并继续仅写入eig_sym

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

最新更新