我正试图用;WXUNIV=1";而且它似乎在任何3.X.X版本上都不起作用。第一个有效的版本是2.9.5。遗憾的是,这个版本太旧了,无法取代我目前使用的版本(3.1.1(
我用来编译的步骤是基于https://docs.wxwidgets.org/trunk/plat_msw_install.html.
- CD到";wxWidgets-3.1.5\build\msw"用VS命令行;
nmake /f makefile.vc BUILD=release SHARED=1 TARGET_CPU=X86 WXUNIV=1
">
这将产生以下错误:
D:\wxWidgets-3.1.5\include\wx/msw/chkconf.h(34(:致命错误C1189:#错误:";必须定义wxUSE_WINRT"NMAKE:致命错误U1077:";C: \Program Files(x86(\Microsoft VisualStudio\2019\Professional\VC\Tools\MSVC\14.28.29333\bin\HostX86\x86\cl.EXE"返回代码"0x2"停止
- 尝试取消定义
wxABORT_ON_CONFIG_ERROR
(我知道不建议这样做,但值得一试(会导致链接错误
知道是什么原因造成的吗?
编辑:我尝试过#define:
wxUSE_WINRT
wxUSE_TASKBARBUTTON
wxUSE_DBGHELP
a.k.a导致错误的定义。这与未定义的wxABORT_ON_CONFIG_ERROR
相同。我得到以下链接错误:
coredll_graphcmn.obj : error LNK2001: unresolved external symbol "public: static class wxGraphicsRenderer * __cdecl wxGraphicsRenderer::GetDefaultRenderer(void)" (?GetDefaultRenderer@wxGraphicsRenderer@@SAPAV1@XZ)
coredll_statbmpg.obj : error LNK2001: unresolved external symbol "public: static class wxGraphicsRenderer * __cdecl wxGraphicsRenderer::GetDefaultRenderer(void)" (?GetDefaultRenderer@wxGraphicsRenderer@@SAPAV1@XZ)
coredll_richtooltipg.obj : error LNK2001: unresolved external symbol "public: static class wxGraphicsRenderer * __cdecl wxGraphicsRenderer::GetDefaultRenderer(void)" (?GetDefaultRenderer@wxGraphicsRenderer@@SAPAV1@XZ)
coredll_dcgraph.obj : error LNK2001: unresolved external symbol "public: virtual struct HDC__ * __thiscall wxGCDC::AcquireHDC(void)" (?AcquireHDC@wxGCDC@@UAEPAUHDC__@@XZ)
coredll_dcgraph.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall wxGCDC::ReleaseHDC(struct HDC__ *)" (?ReleaseHDC@wxGCDC@@UAEXPAUHDC__@@@Z)
....libvc_dllwxmswuniv315u_core_vc_custom.dll : fatal error LNK1120: 3 unresolved externals
NMAKE : fatal error U1077: '"C:Program Files (x86)Microsoft Visual Studio2019ProfessionalVCToolsMSVC14.28.29333binHostX86x86link.EXE"' : return code '0x460'
wxUniv端口还没有准备好用于生产,除非在非常有限的情况下,所以如果你要使用它,尤其是与X11后端以外的东西一起使用,你需要准备好自己处理它,特别是修复它中的错误。
这个应该很容易修复,它只是一个丢失的#if
(WinRT和debughlp即使与wxUniv一起使用也可以使用,即它们取决于平台而不是所使用的UI端口,而wxUnive中的任务栏按钮应该被禁用,因为它没有在那里实现(,但这只是一个开始,因为以后肯定会遇到更多问题。如果你有动力处理它们,请尽一切努力,但我只是想警告你,你不应该期望这个端口与3个主要端口(MSW/GTK/Mac(甚至wxQt具有相同的质量。