犰狳矩阵维度不正确的初始化
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 作为预处理器宏。
简而言之,我尝试按如下方式初始化矩阵:
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 作为预处理器宏。