【发布时间】:2021-04-28 16:40:49
【问题描述】:
我正在尝试使用“WXUNIV=1”编译 wxWidgets,但它似乎不适用于任何 3.X.X 版本。第一个工作的版本是 2.9.5。遗憾的是,这个版本太旧了,无法替换我目前使用的版本(3.1.1)。
我用来编译的步骤是基于https://docs.wxwidgets.org/trunk/plat_msw_install.html。
- 使用 VS 命令行将 CD 复制到“wxWidgets-3.1.5\build\msw”并运行“nmake /f makefile.vc BUILD=release SHARED=1 TARGET_CPU=X86 WXUNIV=1”。
这将给出以下错误:
D:\wxWidgets-3.1.5\include\wx/msw/chkconf.h(34): fatal error C1189: #error: "wxUSE_WINRT must be defined."
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.28.29333\bin\HostX86\x86\cl.EXE"' : return code '0x2'
Stop.
- 尝试取消定义 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)
..\..\lib\vc_dll\wxmswuniv315u_core_vc_custom.dll : fatal error LNK1120: 3 unresolved externals
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.28.29333\bin\HostX86\x86\link.EXE"' : return code '0x460'
【问题讨论】:
-
您想要在 Windows 上进行通用构建的原因是什么?您是否尝试遵循建议 - 定义
wxUSE_WINRT? -
我正在尝试为 Windows 应用程序支持暗模式,而常见的 wxWidgets 构建似乎没有为某些控件提供选项。据我所知,通用构建提供了更大的灵活性。
-
@Igor 我尝试定义报告为未定义的内容。这会导致相同的链接错误。我在原始帖子中添加了一个编辑。
-
我明白了。问题是没有构建 Windows 上的 3.x 版本通用端口。因此没有经过测试。所以你会发现每一个问题——你将独自一人。最近在 ML 中有一个关于
dark mode的讨论——你看到了吗?如果没有 - 我建议在 ML 存档中找到该线程。