十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

CodeBlocks 25.03 配置 wxWidgets 3.2.8 完整指南

CodeBlocks 25.03 配置 wxWidgets 3.2.8 完整指南 简介配置好的 CodeBlocks 25.03 已内置 wxWidgets 3.2.8 开发库面向希望快速上手 C 跨平台 GUI 编程的开发者尤其适合刚接触环境配置的新手。压缩包采用 7z 格式整体约 601MB解压后无需额外安装即可直接使用已有 538 人学习下载。建议通过 CbLauncher.exe 启动它会自动加载本目录内的配置文件与依赖路径免去手动设置环境变量的麻烦直接运行 codeblocks.exe 则需要手动复制 AppData 至系统用户目录过程复杂不推荐新手尝试。wxWidgets 提供按钮、文本框、列表框、画布等常用控件并支持 Windows、Linux、macOS 等平台便于开发跨系统桌面应用。预先配置好的环境省去自行编译和配置库文件的繁琐步骤让用户专注于界面设计与业务逻辑既适合入门实践也适合作为日常 C GUI 开发工具对希望避开安装障碍、快速验证效果的学习者十分友好。老规矩先交代背景折腾这个配置背景是我一直在用 CodeBlocks 写 C 的桌面小工具之前的开发环境还停在 20.03 wxWidgets 3.0这次换了新电脑顺手把 CodeBlocks 升到了 25.03wxWidgets 也换成 3.2.8。原本以为半小时能搞定结果从下载源码到编译通过、再到跑起来第一个窗口断断续续花了一下午。中间踩的坑不少趁还记得比较完整把整个流程和排查思路整理出来。这篇文章既是给自己留个记录也适合正好在用 CodeBlocks 25.03 配 wxWidgets 3.2.8 的朋友照着操作。不管你是刚开始学 C 图形界面还是想把老项目迁到新版本环境这篇都能帮你少走弯路。1. 动手前先搞清楚版本和搭配1.1 为什么是 CodeBlocks 25.03 配 wxWidgets 3.2.8CodeBlocks 25.03 是 2025 年发布的大版本自带 MinGW 编译器安装包就是网上常说的 codeblocks-25.03mingw-setup.exe。这个版本相比老版本最大的变化是内置了更新的 GCC 工具链对 C17/C20 的支持更完整同时也把 wxSmith 可视化编辑器修了不少 bug。wxWidgets 3.2.8 是 3.2 系列的一个维护版本这个版本最大的特点是没有大改 API主要是修 bug 和补平台兼容性所以对老项目升级比较友好。选择 3.2.8 而不是 3.1.x 开发版是因为 3.2 是稳定分支而且官方后续的修复都会 backport 到这个分支用起来省心。还有一个天然的搭配优势CodeBlocks 本身就是 wxWidgets 写的两者同源所以 CodeBlocks 对 wxWidgets 工程的向导支持、头文件路径处理都是最顺手的。如果你在纠结用什么 GUI 库配 CodeBlockswxWidgets 绝对比 Qt 要省事得多——Qt 需要单独装一堆工具链和构建系统wxWidgets 则只要一个编译器就能全搞定。1.2 安装路径和编译器选型先说一个很多人忽略的致命细节安装路径一定不要带空格和中文。wxWidgets 编译过程中会生成大量 makefile 和头文件路径一旦路径里有空格链接阶段大概率会出现找不到头文件或者路径解析错误。我这次安装在D:\wxWidgets-3.2.8CodeBlocks 装在D:\CodeBlocks全程没踩到路径相关的坑。编译器选型上CodeBlocks 25.03 自带的 MinGW 是 TDM-GCC 构建的默认是 32 位。如果你的 wxWidgets 库是用 32 位编译器编出来的那么你的项目也必须用同一位数的编译器混用会直接导致链接失败。我的做法很简单——直接用 CodeBlocks 打开 wxWidgets 的源码工程编译库这样编译器绝对不会错。后面展开说。2. wxWidgets 3.2.8 编译的关键点2.1 用 CodeBlocks 直接编译 wxWidgets 源码很多教程会让你用命令行 make 去编译 wxWidgets但既然我们用 CodeBlocks就没必要绕这个弯。wxWidgets 源码里自带 CodeBlocks 工程文件在源码根目录的build\msw下找后缀.cbp的那个工程文件一般叫wx_widgets.cbp。用 CodeBlocks 打开这个工程你会在右侧看到一堆 target。这里不要慌核心就两个Release静态库版本编译完生成.a文件DLL Release动态库版本编译完生成.dll和导入库如果你只是自己写写小工具我建议选 Release静态库因为发布的时候不需要带着一堆 DLL直接拷 exe 就能跑。如果做得是比较大的项目需要频繁调试可以考虑 Debug 版本但 Debug 版生成的库体积会大不少。选好 target 后直接点 Build接下来就是漫长的等待。我实测在 i5 12400 16GB 内存的机器上静态 Release 版本全量编译大概需要 20 到 30 分钟取决于你 CPU 核心数。期间不要动 CodeBlocks它会把几百个 cpp 文件全部编一遍。你可以去泡杯茶或者刷刷手机。2.2 静态链接还是动态链接怎么选这里我把自己实际对比过的结果直接甩出来对比项静态链接Release动态链接DLL Release编译时间较长约 20-30 分钟略短一些exe 文件体积大几个 MB小几百 KB发布复杂度直接拷 exe必须附带 wx 的 DLL调试体验不方便方便错误信息更直观入门推荐度推荐不推荐我的建议是如果你是初学者或者只是为了跑通环境直接编译静态 Release 版本就好。编译完库文件在wxWidgets-3.2.8\lib\gcc_lib目录下比如libwxmsw32u.a这个u表示 Unicode32表示 32 位msw表示 Windows 平台。如果你编译的是 DLL Release生成的 DLL 在wxWidgets-3.2.8\lib\gcc_dll目录下文件名一般是wxmsw32u_gcc_custom.dll。注意这个gcc_custom后缀它表示这是用 GCC 编译的自定义版本跟官方预编译的 MSVC 版本不通用。2.3 编译完成后必须确认的事setup.h编译完成不要急着关 CodeBlocks有一个关键产物必须确认wx/setup.h。这个文件是 wxWidgets 根据编译选项自动生成的存放所有配置宏。它在lib\gcc_lib\mswu\wx\setup.h静态版或者lib\gcc_dll\mswu\wx\setup.h动态版。为什么这个文件重要因为你在写代码的时候wx/wx.h内部会去 includewx/setup.h。如果编译器搜索路径里找不到这个文件你就会看到一个经典报错wx/setup.h: No such file or directory。很多教程让你把include目录加进搜索路径但实际上光加include是不够的lib\gcc_lib\mswu这个生成目录才是最关键的。3. 在 CodeBlocks 25.03 里配置 wxWidgets3.1 配置全局搜索路径接下来就是配置环节。打开 CodeBlocks进入Settings - Compiler - Global compiler settings - Search directories这里要分两块设置。Compiler编译器搜索目录添加D:\wxWidgets-3.2.8\includeD:\wxWidgets-3.2.8\lib\gcc_lib\mswuLinker链接器搜索目录添加D:\wxWidgets-3.2.8\lib\gcc_lib这两个路径填完头文件和库文件就能被自动找到了。注意编译器搜索目录里的第二个路径就是刚才强调的mswu子目录没有它setup.h绝对找不到这一步错一个字符都不行。3.2 用 wxWidgets 项目向导自动配置路径配好之后下一步建议用 CodeBlocks 自带的 wxWidgets 项目向导创建工程这样能避免手动添加几十个链接参数。新建项目时选wxWidgets project向导会让你填wxWidgets 根目录填D:\wxWidgets-3.2.8是否使用 DLL选 No我们编的是静态库版本号选 3.2.x向导生成的工程会自动把需要链接的库列在 Linker settings 里不用自己手动去记。这一点对新手特别友好我早期手动配置的时候经常因为少了一个libwxbase32u.a导致一堆链接错误用向导就没这烦恼。3.3 手动配置链接库虽然向导能自动配置但你还是得知道链接参数长什么样不然遇到问题没法排查。下面是我在静态 Release 下实测可用的一组链接库列表-lwxmsw32u -lwxbase32u -lwxpng -lwxzlib -lwxregexu -lwxtiff -lwxjpeg -lwxexpat -lwinmm -lcomctl32 -lrpcrt4 -lwsock32 -lole32 -loleaut32 -luuid如果你不想用向导可以手动在Project - Build options - Linker settings - Other linker options里粘贴这串参数。这里提醒一个常见错误Debug 项目一定要链接带d后缀的库比如libwxmsw32ud.aRelease 项目链接不带d的版本。混用轻则报一大堆未定义符号重则运行期崩溃到时候哭都来不及。4. 第一个 wxWidgets 窗口程序的验证4.1 Hello World 跑通配置完成后建一个 wxWidgets 项目向导会自动生成一个简单的 main.cpp 和 App 类模板。直接编译运行正常情况下会弹出一个带菜单栏、工具栏和状态栏的空白窗口。如果弹窗提示缺少 DLL说明你链接了动态库版本。这时把wxmsw32u_gcc_custom.dll从lib\gcc_dll复制到 exe 所在目录或者放到系统 PATH 里即可。我用的是静态库版本直接从一台没装 wxWidgets 的干净机器上跑 exe能正常启动说明静态链接生效了。补充一句如果你要确认 exe 依赖了哪些 DLL可以用 Process ExplorerSysinternals 工具打开 exe看它加载的 DLL 列表。排查“为什么别人的机器上跑不起来”这类问题时特别好用。4.2 顺手验证 OpenGL 支持GLFW 热词关联在搜相关热词时看到很多人搜“codeblocks 配置 glfw”说明大家挺关注 CodeBlocks 里做图形/GUI 相关开发。wxWidgets 3.2.8 里也集成了 OpenGL 支持类wxGLCanvas如果你要在 wxWidgets 窗口里嵌一个 OpenGL 渲染区除了上面的链接库列表外还需要在 Linker 里加上-lopengl32 -lglu32。验证方法很简单在窗口上放一个wxGLCanvas重写它的OnPaint里面调用glClearColor和glClear能把颜色刷出来就说明 OpenGL 链路通了。这一步不是必须的但如果你后面想用 wxWidgets 搭带 3D 渲染的桌面工具能省不少二次排查的时间。5. 常见问题与排查技巧实录下面这几个坑是我身边朋友问得最多的也是我自己实测踩过的直接做成速查表。报错信息原因解决方法wx/setup.h: No such file or directory编译器搜索路径缺了生成的mswu目录把lib\gcc_lib\mswu加到 Compiler 搜索目录cannot find -lwxmsw32u链接器搜索路径不对检查 Linker 搜索目录是否指向lib\gcc_libundefined reference to wxFrame::wxFrame链接库不完整或 Debug/Release 混用确认项目 target 与库版本匹配补全链接库列表The code execution cannot proceed because wxmsw32u_gcc_custom.dll was not found动态链接库未复制把gcc_dll目录下的 DLL 拷到 exe 同目录编译 wxWidgets 时内存不足或者被杀进程并行编译任务太多在 CodeBlocks 的 Settings - Compiler 里降低并行编译数或者分批次编译5.1 wxSmith 可视化编辑器的问题CodeBlocks 的 wxSmith 虽然好上手但在 wxWidgets 3.2.x 上偶尔会抽风表现是打开.wxs文件时设计器一片空白或者自动生成的代码和 3.2 的新特性不兼容。碰到这种情况别在 wxSmith 上死磕直接手写界面代码。wxWidgets 的布局用 wxBoxSizer 配合 wxGridBagSizer 完全可以徒手写出不错的界面而且这样更可控。5.2 编译库之前先关杀毒软件这个坑比较隐蔽wxWidgets 编译时会产生大量小文件有的杀毒软件会逐个扫描导致编译速度暴跌好几倍。我这次编译的时候一开始没注意光编译就跑了快 50 分钟后来把源码目录加入杀毒软件白名单速度才恢复正常。如果你编译时发现 CPU 占用不满但就是编译特别慢可以考虑是不是杀毒在后台拖后腿。5.3 赶紧备份编译好的库最后分享一个个人习惯编译好的lib目录和include目录一定要打包备份。wxWidgets 不像 Qt 那样有安装包重新编译一次最少半小时而且中间还有可能因为网络、杀毒、编译器版本变化出各种幺蛾子。我把编译好的lib和include打个 zip 存网盘重装系统后直接解压配路径就完事十分钟搞定全套环境。说实话wxWidgets 这套配置流程并没有多少黑魔法核心就是对三个东西编译器位数一致、搜索路径完整、链接库正确。只要这三样不出错剩下的就是写代码的事。我这套环境配置好之后已经写了两个小工具跑得很稳。如果你也在用 CodeBlocks wxWidgets照着这篇文章走一遍应该能少踩我踩过的那些坑。本文还有配套的精品资源点击获取
返回列表