编译代码时遇到一些问题。由于错误C2719,有几个函数无法编译 - 带有__declspec(align('16')的形式参数)将不会对齐。
VisualStudio无法编译的功能看起来像
Eigen::Matrix2d AlgorithmBase::ReverseTransform(Eigen::Vector2d point, Eigen::Vector2d *translation, Eigen::Matrix2d *scaling, double phi, Eigen::Matrix2d *share)
{
Eigen::Matrix2d reversedScaling;
reversedScaling(0,0) = 1/(*scaling)(0,0);
reversedScaling(0,1) = reversedScaling(1,0) = 0;
reversedScaling(1,1) = 1/(*scaling)(1,1);
Eigen::MatrixXd newTranslation = -1**translation;
return MatrixHelper::CreateRotationMatrix(-phi)* *scaling*point + newTranslation;
}
void TemplateClusterBase::SetScalingMatrix( Eigen::Matrix2d matrix )
{
if(matrix.rows() == 1 || matrix.cols()==1)
{
this->scalingMatrix = MatrixHelper::CreateScalingMatrix(matrix(0,0));
}
else
{
this->scalingMatrix = matrix;
}
}
这很奇怪,因为之前我使用的是MatrixXd而不是Vector2d和Matrix2d,一切都很好。更有甚者,这是使用stl:vector时常见的问题 - 但是你可以看到这个函数不作为参数stl:vector。
我该怎么做才能解决这个问题?
答案 0 :(得分:3)
编译器错误C2719与STL无关,它告诉您不允许在正式参数声明中使用'align'__ declspec修饰符。
要解决您的问题,您需要在不使用__declspec(align(...))的情况下声明您的函数。当然你没有明确地使用__declspec,所以你需要弄清楚它是如何/为什么代表你使用它。
一个好的起点可能是Eigen :: Matrix2d的定义。