犰狳矩阵尺寸初始化不正确

时间:2015-01-04 06:17:43

标签: c++ visual-studio-2010 matrix 64-bit armadillo

简单地说,我尝试按如下方式初始化矩阵:

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位下不会发生此错误。

1 个答案:

答案 0 :(得分:0)

我找到了答案。

TL; DR:ARMA_64BIT_WORD没有为我正在使用的源文件定义,但它是为其他目标文件定义的,因此在Armadillo库中创建了32位和64位字大小的不稳定组合。

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