2009-02-03 5 views
0

Je rencontre des problèmes lors de la conversion d'un ancien projet de VS6 en VS2005. À un endroit dans le code, il utilise le type variant_t, donc il inclut comdef.h à cet effet. Comdef.h comprend alors comutil.h qui génère ces erreurs pour moi:Problème de compilateur VS2005 C++, y compris <comdef.h> dans l'application MFC

c:\program files\microsoft visual studio 8\vc\include\comutil.h(978) : error C2535: '_variant_t::_variant_t(int) throw()' : member function already defined or declared 
    c:\program files\microsoft visual studio 8\vc\include\comutil.h(970) : see declaration of '_variant_t::_variant_t' 
c:\program files\microsoft visual studio 8\vc\include\comutil.h(1007) : error C2535: '_variant_t::operator int(void) const' : member function already defined or declared 
    c:\program files\microsoft visual studio 8\vc\include\comutil.h(998) : see declaration of '_variant_t::operator int' 
c:\program files\microsoft visual studio 8\vc\include\comutil.h(1037) : error C2535: '_variant_t &_variant_t::operator =(int)' : member function already defined or declared 
    c:\program files\microsoft visual studio 8\vc\include\comutil.h(1029) : see declaration of '_variant_t::operator =' 
c:\program files\microsoft visual studio 8\vc\include\comutil.h(1331) : error C2084: function '_variant_t::_variant_t(int) throw()' already has a body 
    c:\program files\microsoft visual studio 8\vc\include\comutil.h(970) : see previous definition of '{ctor}' 
c:\program files\microsoft visual studio 8\vc\include\comutil.h(1588) : error C2084: function '_variant_t::operator int(void) const' already has a body 
    c:\program files\microsoft visual studio 8\vc\include\comutil.h(998) : see previous definition of '.H' 
c:\program files\microsoft visual studio 8\vc\include\comutil.h(2006) : error C2084: function '_variant_t &_variant_t::operator =(int)' already has a body 
    c:\program files\microsoft visual studio 8\vc\include\comutil.h(1029) : see previous definition of '=' 

Il y a probablement une certaine configuration est incorrecte, certains définissent manquants ou certains comprennent fichier j'ai inclus, mais je ne peux pas sembler trouver le problème. Tous les pointeurs dans la bonne direction est très apprécié

Répondre

-1

Est-ce que votre propre code quelque chose comme ça:

#define long int 
+0

Haha, tu as raison! quand je cherchais autour de ce que j'ai trouvé définit: #ifdef WIN32 #define bool int #define vrai 1 #define false 0 typedef int ssize_t; #define RET "\ r \ n"; #define mystring CString #endif Horrible travail parfois sur l'ancien code! Mais merci infiniment! – Dan

+0

ajouter quoi si avec ce #define une autre erreur se produit? cela pourrait aider pour de petits, très petits projets; mais pas pour une grande fois. par exemple ça ne m'aide pas. il y a un autre point, parce que deux projets dont j'ai l'un compile et fonctionne bien, un autre donne cette erreur. – icaptan

+0

icaptan, avec ce #define l'erreur originale s'est produite, que Dan a demandé de l'aide avec. Dan a dit que j'avais raison et il l'a réparé. Il l'a probablement supprimé pour que l'erreur disparaisse. Maintenant icaptan vous demandez, si avec ce #define d'autres erreurs se produisent. La réponse est la même, non? Supprimer ce #define et d'autres erreurs vont également disparaître? Bien que cela dépende de ce que sont les erreurs. Différentes erreurs nécessitent des corrections différentes. –

0

Cela ressemble à une des deux choses, un include problème d'ordre ou que vous avez dit quelque chose qui ne se défini mais Je penche vers le premier. Vous pouvez vérifier msdn et vous assurer qu'il n'y a pas de restrictions sur quand comutil.h peut être inclus (je sais que c'est un problème si vous incluez winsock2.h avant windows.h). Il existe également une option sous C/C++> Avancé pour Afficher les inclusions (option/showIncludes depuis la ligne de commande), ce qui est généralement utile lorsque vous essayez de suivre des problèmes de ce type.

Questions connexes