使用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>
之前的类头文件中。
同时,感谢我们提供有关其他专家站点的提示,我必须牢记这一点。