wxWidgets和VC++

2 c++ wxwidgets visual-c++

我今天决定熟悉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__.关于迂腐的一切......

Chr*_*isN 5

你可能会发现你甚至无法构建一个基本的Win32应用程序,更不用说wxWidgets应用了/Za,因为VS2008附带的Windows Platform SDK头文件使用了语言扩展.唯一的解决方案是禁用/Za.

您看到的具体错误是因为该_cdecl关键字是Microsoft扩展,而不是标准C++的一部分.有关详细信息,请参阅MSDN中的文档/Za以及Microsoft扩展到C和C++C++关键字页面.