我一直在尝试用 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_mswudll\coredll_treectrl.o' failed
mingw32-make: *** [gcc_mswudll\coredll_treectrl.o] Error 1
谁能帮忙,我试过谷歌搜索,但收效甚微(是的,我确实读过它们!)。
最佳答案
您的 header 中似乎有错误,NMTVDISPINFOWW
(尾随 2 个 W)不存在,不应出现在任何地方。您可以尝试修复 header 本身中的拼写错误或下载已知可用的适用于 Windows 的 gcc 分发版(例如 MinGW-w64 或 TDM-GCC)。
关于c++ - 使用 GCC-4.8.1 在 MinGW 上编译 wxWidgets-2.8.12 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19476533/