Ошибка C2719 в заголовочных файлах - без использования stl: vector - PullRequest
0 голосов
/ 02 июня 2011

У меня проблемы с компиляцией кода. Есть пара функций, которые не могут быть скомпилированы из-за ошибки 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.

Что я могу сделать, чтобы это исправить?

1 Ответ

3 голосов
/ 02 июня 2011

Ошибка компилятора C2719 не имеет ничего общего с STL, оно говорит вам, что вы не можете использовать модификатор __declspec 'align' в объявлениях формальных параметров.

Чтобы исправить вашу проблему, вам нужно объявить свои функции без использования __declspec (align (...)).Конечно, вы явно не используете __declspec, так что вам действительно нужно выяснить, как / почему он используется от вашего имени.

Хорошее место для начала - определение Eigen :: Matrix2d.

...