2010-09-10 13 views
3

Lorsque j'essaie de construire mon projet sur un Windows 7 64 bits en utilisant VS 2010 en configuration Debug 64 bits, j'obtiens cette erreur avec deux autres erreurs.Compilateur VS2010 et erreur cuda: la spécification de liaison est incompatible avec le précédent "hypot"

erreur: spécification de liaison est incompatible avec précédent "hypot" dans la ligne de math.h 161 erreur: spécification de liaison est incompatible avec précédent "hypotf" dans la ligne de math.h 161 erreur: fonction "abs (long long)" a déjà été défini dans math_functions.h ligne 534

Je ne reçois pas ces erreurs dans la version 32 bits. En outre, la version 64 bits a fonctionné dans VS2008. Y a-t-il un bon travail autour de ce problème ou devrais-je juste attendre jusqu'à ce que nvcc supporte le compilateur VS 2010?

Répondre

1

Oui, cela a été changé en 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); 
} 

Je ne sais pas l'erreur abs(), le numéro de ligne semble erroné. L'en-tête math_functions.h n'est plus compatible avec VS2010, il va falloir donner quelque chose. Passez en revue le besoin de toujours #include math.h, il devrait être remplacé par Cuda. Le piratage de l'en-tête serait une autre façon de contourner le problème jusqu'à ce qu'ils le résolvent:

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

VS10 ici aussi, le même conflit C2373 avec 'MonitorFromWindow' dans le 7.1 SDK. Pourriez-vous fournir plus de détails sur le hack en-tête s'il vous plaît? –

+0

Cela n'a rien à voir avec ce Q + A, cliquez sur le bouton Poser une question. –

+0

[Terminé] (http://stackoverflow.com/questions/35720852/windows7-1-sdk-c2373-monitorfromwindow-redefinition). –