我是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
。