我今天决定熟悉wxWidgets.我下载了2.8.9版(当前版本),并以所有需要的模式编译了库.
我能够开箱/运行带有wxWidgets的样品.但是,当我使用/ Za编译(即禁用语言扩展)时,即使是最小的wxWidgets样本,我也会遇到100多个构建错误.
我无法找到有关此问题的任何文档.我可以定义一些能够将wxWidget内部转换为符合标准的东西(至少就VC++的合规性而言)吗?
也许我在构建原始库时做错了什么......有没有人以前遇到过这个"问题"?
谢谢!
编辑:我忘了提到我正在使用VC++ 9.
此外,这是前几个错误:
------ Build build:项目:minimal,配置:Unicode Debug Win32 ------
编译...
minimal.cpp
c:\ wxWidgets-2.8.9\include\wx/dynarray.h(69):错误C2143:语法错误:缺少')'在'*'之前
c:\ wxWidgets-2.8.9\include\wx/dynarray.h(69):错误C2143:语法错误:缺少';' 在'*'之前
c:\ wxWidgets-2.8.9\include\wx/dynarray.h(69):错误C2059:语法错误:')'
c:\ wxWidgets-2.8.9\include\wx/dynarray.h(69):错误C4430:缺少类型说明符 - 假定为int.注意:C++不支持default-int
c:\ wxWidgets-2.8.9\include\wx/dynarray.h(810):错误C2146:语法错误:缺少';' 在标识符"SCMPFUNC"之前
c:\ wxWidgets-2.8.9\include\wx/dynarray.h(810):错误C4430:缺少类型说明符 - 假定为int.注意:C++不支持default-int
c:\ wxWidgets-2.8.9\include\wx/dynarray.h(810):错误C4430:缺少类型说明符 - 假定为int.注意:C++不支持default-int
c:\ wxWidgets-2.8.9\include\wx/dynarray.h(811):错误C2146:语法错误:缺少';' 在标识符"SCMPFUNC"之前
c:\ wxWidgets-2.8.9\include\wx/dynarray.h(811):错误C4430:缺少类型说明符 - 假定为int.注意:C++不支持default-int
c:\ wxWidgets-2.8.9\include\wx/dynarray.h(811):错误C4430:缺少类型说明符 - 假定为int.注意:C++不支持default-int
编辑:它看起来像是由使用_cdecl引起的第一个错误.看起来defs.h只检查是否定义了__VISUALC__.关于迂腐的一切......
你可能会发现你甚至无法构建一个基本的Win32应用程序,更不用说wxWidgets应用了/Za
,因为VS2008附带的Windows Platform SDK头文件使用了语言扩展.唯一的解决方案是禁用/Za
.
您看到的具体错误是因为该_cdecl
关键字是Microsoft扩展,而不是标准C++的一部分.有关详细信息,请参阅MSDN中的文档/Za
以及Microsoft扩展到C和C++和C++关键字页面.