我不能用犰狳进行矩阵乘法。我不知道是否有更多我无法使用的功能。到目前为止,我只使用矢量和点积没有问题。 基本上是:
#include <iostream>
#include <armadillo>
using namespace std;
using namespace arma;
int main(){
//this works
vec v = randu<vec>(10);
cout<<dot(v,v)<<endl;
int n =5;
//this doesn't work
mat M = randu<mat>(n,n); // program compiles but stops running when reaches here
cout<<M*M<<endl;
return 0;
}
我使用的是最新版本的codeblock和armadillo。操作系统是Windows 7.我在编译器链接器设置中包含了lapack和blas库,而blas_win64_MT和lapack_win64_MT都在PATH中。我还在搜索目录中包含了de armadillo文件夹。在config.hpp(armadillo文件夹)中,取消注释#define ARMA_USE_LAPACK和#define ARMA_USE_BLAS。 #define ARMA_USE_WRAPPER已发表评论。另外,我试图将-lapack -lblas添加到build-&gt;项目选项 - &gt;编译器 - &gt;其他选项和build-&gt;项目选项 - &gt;链接器设置 - &gt;其他选项,但我有没有成功。当我尝试使用#define ARMA_USE_WRAPPER取消注释时将-larmadillo添加到编译器时发生了同样的事情。 我错过了什么?
答案 0 :(得分:2)
你的程序当然非常好,因为Armadillo是一个精心设计和交付的库。
可能不正确的是您的安装或本地设置。只有你能搞清楚。
在我的盒子上,在命令行上 - 我只需要与libarmadillo
链接,edd@max:/tmp$ g++ -o arma5by5 arma5by5.cpp -larmadillo
edd@max:/tmp$ ./arma5by5
4.06892
1.5043 1.3996 0.6353 0.8246 1.4694
1.6543 1.6822 0.4338 0.6739 1.5782
1.3145 1.2759 0.3825 0.4967 1.2959
1.4222 1.4584 1.0028 1.3742 1.3593
1.6126 1.7886 0.4599 0.8348 1.5648
edd@max:/tmp$
本身与lapack和blas有联系:
submit button