3

デバッグ 64 ビット構成で VS 2010 を使用して 64 ビット Windows 7 でプロジェクトをビルドしようとすると、他の 2 つのエラーと共にこのエラーが発生します。

エラー: リンケージ仕様は math.h 行 161 の以前の "hypot" と互換性がありません エラー: リンケージ仕様は math.h 行 161 の以前の "hypotf" と互換性がありません エラー: 関数 "abs(long long)" は math_functions で既に定義されています.h 行 534

32 ビット ビルドではこれらのエラーは発生しません。また、64 ビット ビルドは VS2008 で動作しました。この問題に対する適切な回避策はありますか、それとも nvcc が VS 2010 コンパイラをサポートするまで待つべきですか?

4

1 に答える 1

1

はい、これは 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
于 2010-09-10T16:53:05.780 に答える