简单地说,我尝试按如下方式初始化矩阵:
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位下不会发生此错误。
答案 0 :(得分:0)
我找到了答案。
TL; DR:ARMA_64BIT_WORD没有为我正在使用的源文件定义,但它是为其他目标文件定义的,因此在Armadillo库中创建了32位和64位字大小的不稳定组合。
简单的解决方法是在项目的配置属性中添加ARMA_64BIT_WORD作为预处理器宏。