犰狳矩阵维度不正确的初始化

Armadillo Matrix Dimensions Initialisation Incorrect

简而言之,我尝试按如下方式初始化矩阵:

struct MyClass {
  arma::mat _mymat;
};

MyClass::MyClass() : 
_mymat(0,0)
{
}

但是在VS2010调试器中,属性是

{n_rows=0 n_cols=14829735428352901220 n_elem=7925840 ... }

稍后我尝试再次将尺寸设置为 3x3,但随后属性变为

{n_rows=3435973836 n_cols=3435973836 n_elem=3435973836 ... }

当我在乘法中使用 MyClass._mymat 时,程序在运行时抛出异常,抱怨矩阵维度不相等。

平台是VS2010,64位,带犰狳4.200

我也用以前版本的 Armadillo 尝试过同样的效果。

在 Win32 32 位下不会出现此错误。

我找到了答案。

TL;DR: ARMA_64BIT_WORD 不是为我使用的源文件定义的,而是为其他目标文件定义的,因此在犰狳图书馆。

简单的解决方法是在项目的配置属性中添加 ARMA_64BIT_WORD 作为预处理器宏。