c++ - 静态链接 wxWidgets 时的引用错误

标签 c++ mingw wxwidgets static-libraries premake

我正在使用 this Premake4 script for wxWidgets在我的构建脚本中:

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 错误报告(链接丢失) 中提到库顺序导致了这个问题。但是他没有说必须先放哪个库。

最佳答案

这看起来与 this one 完全相同的问题. IE。您需要以正确的顺序将库放入您的 premake 脚本中:aui,media,html,core(重要的是“core”是最后一个)。另外,我不知道它是否被隐式附加,但通常你还需要在最后添加“base”。

关于c++ - 静态链接 wxWidgets 时的引用错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12447842/

相关文章:

C++、COM 和传递字符串

windows - 为什么 Strawberry Perl 不调用我的 DllMain?

Python 轴突二进制文件

c++ - visual studio 中的 wxWidgets 显示 : fatal error LNK1104: cannot open file 'wxmsw29ud_core.lib'

python - 使用 wx.DC 设置背景颜色的更好方法

c++ - 使用 C++ 的内联汇编

c++ - DXGI 桌面复制屏幕捕获速度

c++ - 如何在 QlikView 中制作自定义数据源?

c++ - 异常处理不适用于 Windows 上的 Qt

c++ - wxWidgets 绘画自定义控件