2008-09-23 7 views
2

Je suis en train de passer un de nos projets de VS6 à VS2008 et je l'ai frappé l'erreur de compilation suivante avec mshtml.h:des erreurs de compilation dans mshtml.h compilation avec VS2008

1>c:\program files\microsoft sdks\windows\v6.0a\include\mshtml.h(5272) : error C2143: syntax error : missing '}' before 'constant' 
1>c:\program files\microsoft sdks\windows\v6.0a\include\mshtml.h(5275) : error C2143: syntax error : missing ';' before '}' 
1>c:\program files\microsoft sdks\windows\v6.0a\include\mshtml.h(5275) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 
1>c:\program files\microsoft sdks\windows\v6.0a\include\mshtml.h(28523) : error C2059: syntax error : '}' 
1>c:\program files\microsoft sdks\windows\v6.0a\include\mshtml.h(28523) : error C2143: syntax error : missing ';' before '}' 
1>c:\program files\microsoft sdks\windows\v6.0a\include\mshtml.h(28523) : error C2059: syntax error : '}' 

Suite la première déclaration d'erreur tombe dans cette partie du code mshtml.h, pointant le « Vrai = 1 » ligne:

EXTERN_C const GUID CLSID_CDocument; 
EXTERN_C const GUID CLSID_CScriptlet; 
typedef 
enum _BoolValue 
    { True = 1, 
    False = 0, 
    BoolValue_Max = 2147483647L 
    } BoolValue; 

EXTERN_C const GUID CLSID_CPluginSite; 

Il ressemble à quelqu'un expert-sexchange a aussi rencontré cette erreur mais je préfère ne pas honorer ce site avec un "essai gratuit de 7 jours".

Toutes les suggestions seraient les bienvenues.

+0

faire défiler tout le chemin vers le bas sur cette page - la réponse sera là non obscur –

Répondre

1

Il y a probablement un #define qui change quelque chose. Essayez d'exécuter uniquement le préprocesseur sur votre fichier .cpp et de générer un fichier .i. Le paramètre est dans les pages de propriétés du projet.

EDIT: Vous pouvez également obtenir la réponse de cet autre site expert en faisant défiler vers le bas de la page. Ils doivent faire cela ou Google les sortira de leurs index.

1

Quels autres codes avez-vous dans le fichier en cours de compilation? Il se peut que True ait déjà été défini par une macro comme 1. Cela expliquerait l'erreur.

2

vous pouvez déjà avoir les symboles Vrai Faux & défini, essayez

#undef True 
#undef False 

avant d'inclure ce fichier.

+0

vous avez raison, j'ai résolu le problème en suivant vos instructions. –

0

Merci les gars. J'ai trouvé le bon endroit pour ces # undef. Je les ai déposés dans le fichier d'en-tête des classes juste avant un #include <atlctl.h> qui semblait faire l'affaire.

Et merci pour le conseil sur cet autre site expert, je dois garder cela à l'esprit.

Questions connexes