Как решить проблемы с компиляцией, когда я использую библиотеку броненосца ' - PullRequest
0 голосов
/ 04 апреля 2020

Я новичок в C ++, и я попытался использовать Armadillo, чтобы найти собственные значения симметричной матрицы (eig_sym - это имя функции). Я использовал 'g ++ -std = c ++ 14. main. cpp -o app -O2 -larmadillo -llapack -lbas', и выход был

error: eig_sym не было объявлено в этой области eig_sym (Eigval, A); ^ eigval_sym. cpp: 44: 21: примечание: предлагаемая альтернатива: в файле, включенном из / usr / include / armadillo: 443: 0, из основного. cpp: 6: /usr/include/armadillo_bits/fn_eig_sym.hpp : 118: 1: note: 'arma :: eig_sym'

, но в основном файле. cpp я написал #include. Когда неудача? Возможно, путь к библиотеке не найден?

1 Ответ

0 голосов
/ 29 апреля 2020

просто #include <armadillo> достаточно, чтобы получить всю функциональность из библиотеки броненосца, но учтите, что все в броненосце находится в пространстве имен arma . Поэтому вам нужно либо добавить using namespace arma; в ваш файл cpp, либо добавить все функции и классы в броненосце к arma::. То есть используйте arma::eig_sym вместо eig_sym или добавьте директиву using и продолжайте писать просто eig_sym.

Это то же самое, что вам нужно сделать со стандартной библиотекой, которая находится в пространстве имен std. Вам нужно написать std::cout, а не просто cout, если вы не добавите using namespace std;.

...