使用VS2008编译mshtml.h中的编译错误

时间:2020-03-06 14:34:38  来源:igfitidea点击:

我正在将我们的项目之一从VS6迁移到VS2008,并且遇到了以下mshtml.h编译错误:

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 : '}'

在第一个错误语句之后,将其放入mshtml.h代码的这一部分,指向" True = 1"行:

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;

似乎有人在进行专家交易时也遇到了此错误,但我不希望通过" 7天免费试用"来端庄该网站。

任何建议将是最欢迎的。

解决方案

可能是#define更改了一些内容。尝试仅在.cpp上运行预处理器并生成.i文件。该设置位于项目属性页面中。

编辑:此外,我们可以通过滚动到页面底部从其他专家站点获得答案。他们必须这样做,否则Google会将其从索引中删除。

我们当前正在编译的文件中还有哪些其他代码?可能是因为一个宏已经将" True"定义为" 1"。那将解释该错误。

我们可能已经定义了True和False符号,请尝试

#undef True 
#undef False

在包含该文件之前。

谢谢你们。我找到了那些#undef的正确位置。我把它们放到了似乎可以解决问题的#include <atlctl.h>之前的类头文件中。

同时,感谢我们提供有关其他专家站点的提示,我必须牢记这一点。