我今天决定熟悉wxWidgets。 我下载了2.8.9版(当前版本),并以所有需要的模式编译了库。
我能够开箱/运行带有wxWidgets的样本。 但是,当我使用 / Za 进行编译时(即禁用了语言扩展名),即使是最小的wxWidgets样本,我也会遇到100多个构建错误。
我无法找到有关此问题的任何文档。我可以定义一些能够将wxWidget内部转换为符合标准的东西(至少就VC ++的合规性而言)吗?
也许我在构建原始库时做错了什么......有没有人甚至在此之前遇到过这个“问题”?
谢谢!
编辑:我忘了提到我使用的是VC ++ 9。
此外,这是前几个错误:
------ Build build:Project: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 __ 。关于迂腐的看法......
答案 0 :(得分:5)
您可能会发现,即使是基本的Win32应用程序,更不用说使用/Za
构建wxWidgets应用程序,因为VS2008附带的Windows平台SDK标头使用语言扩展。唯一的解决方案是禁用/Za
。
您看到的具体错误是因为_cdecl
关键字是Microsoft扩展,而不是标准C ++的一部分。
有关详情,请参阅MSDN中的documentation for /Za
以及Microsoft Extensions to C and C++和C++ Keywords页面。