0

コードのコンパイルに問題があります。エラー 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;
    }
}

以前は Vector2d と Matrix2d の代わりに MatrixXd を使用し、すべて問題なかったという事実のため、これは非常に奇妙です。さらに、これは stl:vector を使用する場合の一般的な問題です - ただし、ご覧のとおり、この関数はパラメータとして stl:vector を取りません。

これを修正するにはどうすればよいですか?

4

1 に答える 1

3

コンパイラ エラーC2719は STL とは何の関係もありません。これは、仮パラメーター宣言で 'align' __declspec 修飾子を使用することは許可されていないことを示しています。

問題を解決するには、__declspec(align (...)) を使用せずに関数を宣言する必要があります。もちろん、明示的に __declspec を使用しているわけではないので、実際にそれがどのように/なぜ使用されているのかを理解する必要があります。

Eigen::Matrix2d の定義から始めるとよいでしょう。

于 2011-06-01T22:52:26.083 に答える