2

我决定今天熟悉一下 wxWidgets。我下载了 2.8.9 版(当前版本),并以所有需要的模式编译了库。

我能够开箱即用地构建/运行 wxWidgets 附带的示例。但是,当我使用/Za进行编译(即禁用语言扩展)时,即使是最小的 wxWidgets 示例,我也会遇到 100 多个构建错误。

我找不到有关此问题的任何文档。我可以定义一些东西来将 wxWidget 的内部切换为符合标准(至少就 VC++ 的合规性而言)?

也许我在构建原始库时做错了什么......以前有没有人遇到过这个“问题”?

谢谢!

编辑:我忘了提到我正在使用 VC++ 9。

此外,这里是前几个错误:

------ 构建开始:项目:最小,配置:Unicode Debug Win32 ------

正在编译...

最小的.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++ 不支持默认整数

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++ 不支持默认整数

c:\wxWidgets-2.8.9\include\wx/dynarray.h(810):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数

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++ 不支持默认整数

c:\wxWidgets-2.8.9\include\wx/dynarray.h(811):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数

编辑:看起来第一个错误是由使用_cdecl的事实引起的。看起来defs.h只检查是否定义了__VISUALC__。看不到学究气...

4

1 回答 1

5

您可能会发现您甚至无法使用 构建基本的 Win32 应用程序,更不用说 wxWidgets 应用程序了/Za,因为 VS2008 包含的 Windows 平台 SDK 标头使用语言扩展。唯一的解决方案是禁用/Za.

The specific error you're seeing is because the _cdecl keyword is a Microsoft extension, and not part of standard C++. For more information, see the documentation for /Za, and the Microsoft Extensions to C and C++ and C++ Keywords pages in MSDN.

于 2009-03-01T12:01:01.607 回答