静态链接wxWidgets时出现引用错误

问题描述 投票:0回答:2

我在构建脚本中使用 wxWidgets 的 Premake4 脚本:

wx_config {Unicode="yes", Version="2.9", Libs="core,aui,media,html", WindowsCompiler="gcc", Static="yes"}

但是CodeBlocks分别MinGW输出很多错误:

wx\lib\gcc_lib/libwxbase29u.a(baselib_filename.o):filename.cpp:(.text+0x5371): undefined reference to `CoCreateInstance@20' wx\lib\gcc_lib/libwxbase29u.a(baselib_filename.o):filename.cpp:(.text+0x5390): undefined reference to `IID_IPersistFile' wx\lib\gcc_lib/libwxmsw29u_core.a(corelib_window.o):window.cpp:(.text+0x7cc9): undefined reference to `wxEVT_POWER_SUSPEND_CANCEL' wx\lib\gcc_lib/libwxmsw29u_core.a(corelib_window.o):window.cpp:(.text+0x7cf9): undefined reference to `vtable for wxPowerEvent' wx\lib\gcc_lib/libwxmsw29u_core.a(corelib_window.o):window.cpp:(.text+0x7d55): undefined reference to `wxEVT_POWER_SUSPENDED' wx\lib\gcc_lib/libwxmsw29u_core.a(corelib_window.o):window.cpp:(.text+0x7d61): undefined reference to `wxEVT_POWER_SUSPENDING' wx\lib\gcc_lib/libwxmsw29u_core.a(corelib_window.o):window.cpp:(.text+0x7d6d): undefined reference to `wxEVT_POWER_RESUME' wx\lib\gcc_lib/libwxmsw29u_core.a(corelib_window.o):window.cpp:(.text+0x7f18): undefined reference to `vtable for wxPowerEvent' ...

您可以在此处查看所有链接器错误:

http://pastebin.com/UGSRg4DX

有人在 wxWidgets 错误报告中提到

(链接丢失) 库顺序导致了这个问题。但他没有说哪个库必须放在第一位。

c++ mingw wxwidgets static-libraries premake
2个回答
2
投票
这看起来与

这个问题完全相同。 IE。您需要以正确的顺序将库放入预制脚本中:aui,media,html,core

(重要的是“核心”是最后一个)。另外,我不知道它是否是隐式附加的,但通常你还需要在最后添加“base”。


0
投票
MinGW 编译器不太适合 wxwidgets。甚至我也尝试过使用 MinGW GCC 编译器来编译我的项目。但经过这么多次尝试我还是能成功。

我首先使用 TDM-GCC 编译器做了同样的事情。后来我也尝试使用 MSYS64 编译器。结果很好。

他们都能够编译该项目。

所以我建议您使用除 MinGW 之外的任何编译器。

© www.soinside.com 2019 - 2024. All rights reserved.