下面的测试程序应该生成一个包含5个随机元素的向量,但是当我在计算机上编译并运行它时,它仅包含零。
#include <iostream>
#include <armadillo>
using std::cout;
using std::endl;
using arma::vec;
int main()
{
arma::arma_rng::set_seed(1);
vec v = arma::randu<vec>(5);
cout << v << endl;
cout << v(0) << endl;
return 0;
}
编译/输出
$ g++ main.cpp -o example -std=c++11 -O2 -larmadillo
$ ./example.exe
0
0
0
0
0
0
我在Windows 10上,使用的是gcc((Rev1,由MSYS2项目构建)8.2.1 20181214)和来自MSYS2的Armadillo(9.200.6)。
软件包(mingw64子系统中的pacman):
mingw64/mingw-w64-x86_64-armadillo 9.200.6-1
mingw64/mingw-w64-x86_64-gcc-8.3.0-1
有什么原因会导致这种情况吗?
我有一个暗示,可能是因为我正在使用Armadillo的MSYS2版本,但是我不确定,还没有自己测试过编译该库。
编辑:我有点暗示这与MSYS有关,所以我在这里提出了一个问题:https://github.com/msys2/MINGW-packages/issues/5019