如何在Windows系统下使用MinGW正确编译基础wxWidgets程序
Windows MinGW 编译 wxWidgets 应用操作指南
错误原因说明
你当前使用的编译命令仅配置了头文件搜索路径,缺少wxWidgets要求的编译预定义宏、库搜索路径和对应依赖库的链接配置,这是触发大量未定义错误的核心原因。
前置准备:编译wxWidgets的MinGW版本
首先需确认你已使用MinGW工具链完成wxWidgets源码的编译,不可直接使用MSVC版本的预编译库,两者二进制不兼容。
编译操作步骤:
- 进入wxWidgets源码根目录下的
build/msw文件夹 - 执行如下编译命令(静态发布版为例):
mingw32-make -f makefile.gcc BUILD=release UNICODE=1 SHARED=0
参数说明:
BUILD=release:编译发布版本,如需调试可替换为BUILD=debugUNICODE=1:启用Unicode编码支持,为当前wxWidgets的标准配置SHARED=0:编译静态库,编译出的程序无需附带wxWidgets的dll文件;如需动态编译可替换为SHARED=1
应用编译命令配置
标准命令示例(对应上述静态发布版wxWidgets配置):
g++ noname.cpp -o noname.exe ^ -I ".\wxWidgets-3.1.5\include" ^ -I ".\wxWidgets-3.1.5\build\lib\wx\include\msw-unicode-3.1" ^ -D__WXMSW__ -DwxUSE_UNICODE=1 ^ -L ".\wxWidgets-3.1.5\build\lib\gcc_lib" ^ -lwxmsw31u_core -lwxbase31u -lwxpng -lwxzlib -lwxjpeg -lcomctl32 -luser32 -lkernel32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -luuid -lrpcrt4 -lwsock32 -lwininet
参数说明:
-D__WXMSW__ -DwxUSE_UNICODE=1:必须配置的预定义宏,告知编译器目标为Windows平台的Unicode版本wxWidgets应用-L后路径为wxWidgets编译生成的库文件存放目录:静态编译对应gcc_lib,动态编译对应gcc_dll- 后缀的
-l开头参数为需要链接的依赖库,基础功能需包含上述列出的所有库,若使用wxWidgets其他功能模块(如网络、富文本、HTML等)需额外补充对应库
常见问题排查
- 若仍有未定义错误,首先确认编译wxWidgets的参数和编译应用的参数完全一致:如编译wxWidgets时使用
SHARED=1,则编译应用时需额外添加-DWXUSINGDLL宏,且库路径改为gcc_dll - 链接库的顺序不可随意调整,依赖其他库的组件需放在依赖项的前面
- 32位与64位MinGW生成的库不兼容,需确保编译wxWidgets和编译应用使用的是同架构的MinGW工具链
内容的提问来源于stack exchange,提问作者dalkom12
相关产品推荐
相关产品推荐

