2016-12-24 82 views
2

我有以下的错误尝试编译犰狳:错误编译犰狳

Undefined symbols for architecture x86_64: 
    "_wrapper_ddot_", referenced from: 
     void arma::syrk_vec<true, false, false>::apply<double, arma::Mat<double> >(arma::Mat<double>&, arma::Mat<double> const&, double, double) in exampleArma.o 
     void arma::syrk_vec<true, false, false>::apply<double, arma::Row<double> >(arma::Mat<double>&, arma::Row<double> const&, double, double) in exampleArma.o 
    "_wrapper_dgemm_", referenced from: 
     void arma::gemm<true, false, false, false>::apply_blas_type<double, arma::Mat<double>, arma::Mat<double> >(arma::Mat<double>&, arma::Mat<double> const&, arma::Mat<double> const&, double, double) in exampleArma.o 
     void arma::gemm<true, false, false, false>::apply_blas_type<double, arma::Row<double>, arma::Row<double> >(arma::Mat<double>&, arma::Row<double> const&, arma::Row<double> const&, double, double) in exampleArma.o 
    "_wrapper_dgemv_", referenced from: 
     void arma::glue_times::apply<double, true, false, false, arma::Mat<double>, arma::Mat<double> >(arma::Mat<double>&, arma::Mat<double> const&, arma::Mat<double> const&, double) in exampleArma.o 
     void arma::glue_times::apply<double, true, false, false, arma::Row<double>, arma::Row<double> >(arma::Mat<double>&, arma::Row<double> const&, arma::Row<double> const&, double) in exampleArma.o 
    "_wrapper_dsyrk_", referenced from: 
     void arma::syrk<true, false, false>::apply_blas_type<double, arma::Mat<double> >(arma::Mat<double>&, arma::Mat<double> const&, double, double) in exampleArma.o 
     void arma::syrk<true, false, false>::apply_blas_type<double, arma::Row<double> >(arma::Mat<double>&, arma::Row<double> const&, double, double) in exampleArma.o 

我使用的makefile编译和我已经尝试过在这里发现了不会有好结果的解决方案。到现在为止,我的项目有不同的类,它们都是用makefile编译的。其中两个使用犰狳:第一个不显示任何问题。相反,这个新班级给我编译错误。我发现这里的错误是使用犰狳的cor函数给出的。当我在第一节中使用rowvec或cx_rowvec时,所有工作都完美无缺。调试我注意到,当我取消与cor行代码我得到的错误。有人能帮我吗?我安装了最后一个犰狳版本7.600.2。

现在我试着使用不同的犰狳库函数:它听起来像我没有其中的一些。例如使用下列函数mean(X),var(X),stddev(X)我没有任何问题,它编译完美。相反,当我尝试使用其他功能,如cov(X), cor(X)我得到的错误。我想我的图书馆没有这些功能。所以为了解决这个问题,我试图安全地移除旧库并安装一个新库。不幸的是,错误成立。我希望这个更新会有所帮助。我不认为我在makefile中犯了一些错误,因为在我的代码中使用某些特定函数时编译不好。 谢谢大家!

+1

可能重复[什么是未定义的引用/无法解析的外部符号错误,以及如何解决它?](http://stackoverflow.com/questions/12573816/what-is-an-undefined-reference-unresolved- external-symbol-error-and-how-do-i-fix) – Danh

+0

请参阅Armadillo [常见问题](http://arma.sourceforge.net/faq.html)页面的“链接”部分。 – mtall

回答

1

我解决了armadillo_bits/config.hpp中的以下几行注释: #define ARMA_USE_LAPACK#define ARMA_USE_BLAS。 即使它工作,这也是错误的解决方案。在链接部分http://arma.sourceforge.net/faq.html#linking中描述了更好的解决方案。

+0

这是错误的。在Armadillo [常见问题](http://arma.sourceforge.net/faq.html)页面的“链接”部分描述了一个更好的解决方案。 – mtall