Компилятор VS2010 и ошибка cuda: спецификация связи несовместима с предыдущей «гипотетой» - PullRequest
3 голосов
/ 10 сентября 2010

Когда я пытаюсь построить свой проект на 64-битной Windows 7, используя VS 2010 в отладочной 64-битной конфигурации, я получаю эту ошибку вместе с двумя другими ошибками.

ошибка: спецификация связи несовместима с предыдущей "гипотезой"«в строке 161 math.h ошибка: спецификация связи несовместима с предыдущим« hypotf »в строке 161 ошибки math.h: функция« abs (long long) »уже определена в строке 534

math_functions.hЯ не получаю эти ошибки в 32-битной сборке.Кроме того, 64-битная сборка работала в VS2008.Надлежит ли обойти эту проблему должным образом или я должен просто подождать, пока nvcc не поддерживает компилятор VS 2010?

1 Ответ

1 голос
/ 10 сентября 2010

Да, это было изменено в VS2010:

/* hypot and hypotf are now part of the C99 Standard */
static __inline double __CRTDECL hypot(_In_ double _X, _In_ double _Y)
{
    return _hypot(_X, _Y);
}

Не уверен в ошибке abs (), номер строки выглядит неправильно.Заголовок math_functions.h больше не совместим с VS2010, что-то должно дать.Рассмотрите необходимость все еще включать #include math.h, он должен быть функционально заменен на Cuda.Взлом заголовка - это еще один способ обойти проблему, пока они ее не исправят:

#if !defined(_MSC_VER) || _MSC_VER < 0x1400
    // hypotf definition here...
#endif
...