生成WXUNIV=1的wxWidgets失败



我正试图用;WXUNIV=1";而且它似乎在任何3.X.X版本上都不起作用。第一个有效的版本是2.9.5。遗憾的是,这个版本太旧了,无法取代我目前使用的版本(3.1.1(

我用来编译的步骤是基于https://docs.wxwidgets.org/trunk/plat_msw_install.html.

  1. 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"停止

  1. 尝试取消定义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具有相同的质量。

最新更新