使用 GCC-4.8.1 在 MinGW 上编译 wxWidgets-2.8.12 时出错
Error while compiling wxWidgets-2.8.12 on MinGW with GCC-4.8.1
我一直在尝试用MinGW的GCC(版本4.8.1)编译wxWidgets,并且一直收到来自g ++的错误,说:
../../src/msw/treectrl.cpp: In member function 'virtual bool wxTreeCtrl::MSWOnNo
tify(int, WXLPARAM, WXLPARAM*)':
../../src/msw/treectrl.cpp:2581:17: error: 'NMTVDISPINFOWW' was not declared in
this scope
TV_DISPINFO *info = (TV_DISPINFO *)lParam;
^
../../src/msw/treectrl.cpp:2581:30: error: 'info' was not declared in this scope
TV_DISPINFO *info = (TV_DISPINFO *)lParam;
^
../../src/msw/treectrl.cpp:2581:51: error: expected primary-expression before ')
' token
TV_DISPINFO *info = (TV_DISPINFO *)lParam;
^
../../src/msw/treectrl.cpp:2581:52: error: expected ';' before 'lParam'
TV_DISPINFO *info = (TV_DISPINFO *)lParam;
^
In file included from ....include/wx/msw/gccpriv.h:22:0,
from ....include/wx/platform.h:577,
from ....include/wx/defs.h:21,
from ....include/wx/wxprec.h:13,
from ../../src/msw/treectrl.cpp:21:
../../src/msw/treectrl.cpp:2615:17: error: 'NMTVDISPINFOWW' was not declared in
this scope
TV_DISPINFO *info = (TV_DISPINFO *)lParam;
^
../../src/msw/treectrl.cpp:2615:30: error: 'info' was not declared in this scope
TV_DISPINFO *info = (TV_DISPINFO *)lParam;
^
../../src/msw/treectrl.cpp:2615:51: error: expected primary-expression before ')
' token
TV_DISPINFO *info = (TV_DISPINFO *)lParam;
^
../../src/msw/treectrl.cpp:2615:52: error: expected ';' before 'lParam'
TV_DISPINFO *info = (TV_DISPINFO *)lParam;
^
In file included from ....include/wx/msw/gccpriv.h:22:0,
from ....include/wx/platform.h:577,
from ....include/wx/defs.h:21,
from ....include/wx/wxprec.h:13,
from ../../src/msw/treectrl.cpp:21:
../../src/msw/treectrl.cpp:2659:17: error: 'NMTVDISPINFOWW' was not declared in
this scope
TV_DISPINFO *info = (TV_DISPINFO *)lParam;
^
../../src/msw/treectrl.cpp:2659:30: error: 'info' was not declared in this scope
TV_DISPINFO *info = (TV_DISPINFO *)lParam;
^
../../src/msw/treectrl.cpp:2659:51: error: expected primary-expression before ')
' token
TV_DISPINFO *info = (TV_DISPINFO *)lParam;
^
../../src/msw/treectrl.cpp:2659:52: error: expected ';' before 'lParam'
TV_DISPINFO *info = (TV_DISPINFO *)lParam;
^
In file included from ....include/wx/msw/gccpriv.h:22:0,
from ....include/wx/platform.h:577,
from ....include/wx/defs.h:21,
from ....include/wx/wxprec.h:13,
from ../../src/msw/treectrl.cpp:21:
../../src/msw/treectrl.cpp:3084:17: error: 'NMTVDISPINFOWW' was not declared in
this scope
TV_DISPINFO *info = (TV_DISPINFO *)lParam;
^
../../src/msw/treectrl.cpp:3084:30: error: 'info' was not declared in this scope
TV_DISPINFO *info = (TV_DISPINFO *)lParam;
^
../../src/msw/treectrl.cpp:3084:51: error: expected primary-expression before ')
' token
TV_DISPINFO *info = (TV_DISPINFO *)lParam;
^
../../src/msw/treectrl.cpp:3084:52: error: expected ';' before 'lParam'
TV_DISPINFO *info = (TV_DISPINFO *)lParam;
^
makefile.gcc:9310: recipe for target 'gcc_mswudllcoredll_treectrl.o' failed
mingw32-make: *** [gcc_mswudllcoredll_treectrl.o] Error 1
谁能帮忙,我试过谷歌搜索,但结果很少(是的,我确实读过它们!
您的标头中似乎有一个错误,NMTVDISPINFOWW
(带有 2 个尾随的 Ws)不存在,也不应该出现在任何地方。您可以尝试修复标头本身中的拼写错误,或下载已知有效的Windows的gcc发行版(例如MinGW-w64或TDM-GCC)。
此处记录了类似的问题: http://mingw.5.n7.nabble.com/win32api-version-4-td32288.html
无论如何,我强烈建议使用MinGW-w64或TDM-GCC的sjlj版本。
"标准"MinGW 发行版使用 dw2 异常处理,当异常通过事件循环传递时会导致一些问题。
相关文章:
- 二叉排序树无法编译
- 编译时未启用intel oneApi CUDA支持
- 无法编译wxWidgets Hello World
- 如何使用CLion和MSVC编译器工具链编译wxWidgets Hello World应用程序而没有错误?
- 无法在 WXWIDGETS Windows 10 中编译调试
- 如何将编译的 wxwidgets 与 cmake 一起使用
- wxWidgets 在编译时包含图像
- 在链接阶段期间无法通过Visual Studio远程编译找到WXWIDGETS库
- WxWidgets Hello World 编译失败:"wchar_t must be available"
- 尝试编译我的 wxWidgets 程序时出错"is_enum not declared in this scope"
- 在Windows 10上使用wxWidgets(MinGW模式)编译源代码的问题
- wxWidgets 编译 MinGW - 错误 1 和错误 2
- 使用 GCC-4.8.1 在 MinGW 上编译 wxWidgets-2.8.12 时出错
- 在Visual Studio 11 Beta下编译wxWidgets 2.8.12和2.9.3
- C++wxWidgets应用程序未编译
- WxWidgets编译帮助
- wxWidgets编译错误(致命错误LNK1120: 26个未解决的外部)
- 使用c++0x标志编译wxWidgets
- 编译wxWidgets时出错
- 如何静态编译wxwidgets应用程序