CodeBlocks20.03配置wxWidgets

背景 - 现在是2023年

1. 很多年前,下载使用CodeBlocks就发现里面有自带的wxWidgets Project的项目,然而一路Next下去出来的程序根本就不能运行,心有不甘;

2. 前几年,用python做小工具的时候,界面用的wxPython,也花了挺多的时间学习wxPython;

3. 去年,由于心中执念,又尝试在CodeBolcks中配置wxWidgets,以往的文章或教程都建议自己去编译,但在编译的过程中障碍重重,无法顺利前进,残念...

4. 执念更甚,3月时花了一些时间,查了不少资料,才发现还有一条不需要自己编译的路,但仍然遇到不少的阻碍,最后堪堪能够在CodeBlocks 13上运行wxWidgets3.0.5的模板程序。然而5分钟后,CodeBlocks 20就再次跳出一堆堆的Error,再次残念...

5. 放下一段时间再回来,这一次终于弄得清楚明白。

主要参考资料

名称说明
windows下的wxWidgets环境配置这个是有效的下载预编译好的dll的操作,对应Codeblocks 13 也是自己实现的主要参考
使用CodeBlocks搭建wxWidgets C++ GUI图形化开发环境这是CB 20.03在linux下的配置 wx 3.1.7, 2022-10比较新,但linux编译wx的操作无法直接在Win11上使用
wxWidgets 在 Windows 下开发环境配置本文基于 CodeBlocks (16.01) 和 wxWidgets (3.0.2) 搭建 使用的是自己下载源码包,新建bat进行编译 并列出几个编译遇到的问题

环境

win11 x64, CodeBlocks 20.03, wxWidgets 3.0.5

步骤

1.下载安装CodeBlocks

官网:Code::Blocks - Code::BlocksThe IDE with all the features you need, having a consistent look, feel and operation across platforms.icon-default.png?t=N7T8http://www.codeblocks.org下载安装文件直接安装即可,CodeBlocks跨平台,基于wxWidgets,小而快;

2.下载已经预编译好的wx

新人上手建议使用已经编译好的DLL,已编译好的库涵盖的lib更多,参考某些网友说的如果自己编译release和debug两个版本编译得一个多小时, 而且编译出来的lib还不全,而对于我自来说,压根就没有编译通过;

另外,自己编译还涉及到make的用法,这个虽然在linux C++课程上的确是学习过,但太久没有操作,早就没什么概念了,跟着别人的不全的文章进行操作,走着走着就发现走不通了,这样就增加了入门的门槛,毕竟我们现在只是配置工具的事!

官网:Downloads - wxWidgetsicon-default.png?t=N7T8https://www.wxwidgets.org/downloads/页面上注意,自己不编译则不需要下载上面的Source Code,直接点Binaries去下载就可以了。这里没敢下最新的,于是选择的是旧的Stable的版本3.0.5 。

从这里也可以看到wxWidget的与时俱进,最下面的2.8的版本可是没有给windows的Binaries的。

点击后会弹出对应不同编译器,选择Codeblocks 20默认配置的MinGW-8.1,里面必须下载3个文件,分别是头文件 Header Files,开发文件 Development Files和库文件Release DLLs。

下载后解压,这里就出现2个文件夹,分别include和lib ,把它们可以放到Codeblocks文件夹,后面就开始Codeblocks的配置了。

3.CodeBlocks配置

3.1 全局变量 Global variable Editor

由菜单Settings->Global Variable Editor ,全局变量就是告诉CodeBlocks你的wxWidget目录在哪,并且include目录和lib的目录在什么位置,设置对了CodeBlocks就能找得到,程序才能运行。

注意,

  1. 电脑上可能有几个版本的CodeBlocks,但配置文件好像是共用的,如果要在不同的版本下,需要添加新的 SET;
  2. 也可能有不同的编译器,比如老一点版本的GCC 492,VC++ 8.0的,VC++ 12.0 等等,所以还要新建或Clone Varible;

3.2 编译器 Compiler的配置

当电脑上只有一版CodeBlocks且GCC的编译器只有一版,并且已经正常编译运行C++程序的基础上,对于wxWidgets的配置内容是很简单的,只需要把 Settings->Compiler->Linker Settings添加lib目录下所有.a文件就可以了。

4. CodeBlocks新建项目

在前面几项都OK的基础上,就可以新建项目了。在这个过程中,需要有一些注意事项:

  1. 新建 wxWidgets Project
  2. Welcome页可以跳过
  3. 选择wxWidgets版本,这一步当然是根据你前面下载的wxWidgets是什么版本就必须对应这个版本,Codeblocks 13里只支持到3.0.x , 20则支持到3.1.x 。所以如果Codeblocks版本比较旧的情况下,wxWidgets也不要下最新的
  4. Project title 随意,path也没有特别要注意的
  5. 作者信息页,可以不填
  6. GUI Builder 选择wxSmith,这是CodeBlocks已经集成好了的,至于Dialog还是Frame需要根据自己的需求来定,我们先用Frame
  7. 然后到了select the location of wxWidgets,如果电脑上只有一版且一个编译器版本的wxWidgets,那么可以像其他作者写的 wxWidgets location 设置为 $(#wx);但一旦电脑上有2个wxWidgets的文件夹(例如这里有wx3.0.5 for GCC8.1和wx3.0.5 for GCC4.92)那就需要选择对应的文件夹了
  8. 选择编译器,同上,如果只有一个默认的GCC,直接Next,否则要选择对应的那一个
  9. 在select various configuration中,建议是只勾1和3,即Use wxWidgets DLL和Enable unicode
  10. 下一页,select additional libraries,附加库,可不选,也可以直接全选中,然后Finish就好了

5. 编译运行及问题

基本上按上面的操作,就可以跑起来了。但电脑上多个Codeblocks,多个set,varible的情况下,还是可能出错些问题,如下

||=== Build: Debug in wxTest01 (compiler: GNU GCC Compiler) ===|
ld.exe||cannot find -lwxmsw30ud_dbgrid|
ld.exe||cannot find -lwxbase30ud_odbc|
ld.exe||cannot find -lwxmsw30ud_qa|
||error: ld returned 1 exit status|
||=== Build failed: 4 error(s), 0 warning(s) (0 minute(s), 8 second(s)) ===|

这时不需要太紧张,

  1. 点到Projects,在workspace中右键当前的项目, --> Build Options...
  2. 在Project build options中选择第二页 Linker settings;
  3. 将已经存在的lib先clear,再到正确的文件夹下重新Add,并按提示保存为相对路径
  4. 点击OK退出

然后,程序就可以进行编译并运行了~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/64016.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

编程题四大算法思想(三)——贪心法:找零问题、背包问题、任务调度问题、活动选择问题、Prim算法

文章目录 贪心法找零问题(change-making problem)贪心算法要求基本思想适合求解问题的特征 背包问题0/1背包问题0/1背包问题——贪心法 分数背包问题 任务调度问题活动选择问题活动选择——贪心法最早结束时间优先——最优性证明 Prim算法 贪心法 我在当…

pytorch中nn.Conv1d功能介绍

在使用Conv1d函数时,pytorch默认你的数据是一维的,比如一句话“深度学习”可以用一个一维数组 [深, 度, 学, 习] 表示,这个数据就是一维的。图片是二维数据,它有长宽两个维度。 因此在使用 Conv1d 函数时,输入是一个三…

java八股文面试[多线程]——synchronized锁升级详细流程

偏向锁 偏向锁是JDK6中的重要引进,因为HotSpot作者经过研究实践发现,在大多数情况下,锁不仅不存在多线程竞争,而且总是由同一线程多次获得,为了让线程获得锁的代价更低,引进了偏向锁。 偏向锁是在单线程执…

表白墙程序

目录 一、页面代码部分 二、设计程序 二、实现 doPost​编辑 三、实现 doGet 四、前端代码部分 五、使用数据库存储数据 一、页面代码部分 在之前的一篇博客中&#xff0c;已经写过了表白墙的页面代码实现&#xff0c;这里就不再重复了 页面代码如下&#xff1a; <!…

ubuntu22安装和部署Kettle8.2

前提 kettle是纯java编写的etl开源工具&#xff0c;目前kettle7和kettle8都需要java8或者以上才能正常运行。所以运行kettle前先检查java环境是否正确配置&#xff0c;java版本是否是8或者以上。 kettle安装 1、创建kettle目录&#xff0c;并将kettle的zip包解压到kettle目…

linux开启端口

目录 1.查看防火墙状态 1.1 开启防火墙 1.2 再次查看防火墙状态 2.开启指定端口 3. 重启防火墙 4.重新加载防火墙 5.查看已经开启的端口 1.查看防火墙状态 firewall-cmd --state 如果返回的是 not running&#xff0c;那么需要先开启防火墙&#xff0c; 1.1 开启防火…

机器人中的数值优化(五)——信赖域方法

本系列文章主要是我在学习《数值优化》过程中的一些笔记和相关思考&#xff0c;主要的学习资料是深蓝学院的课程《机器人中的数值优化》和高立编著的《数值最优化方法》等&#xff0c;本系列文章篇数较多&#xff0c;不定期更新&#xff0c;上半部分介绍无约束优化&#xff0c;…

写的一款简易的热点词汇记录工具

项目需要对用户提交的附件、文章、搜索框内容等做热词分析。如下图&#xff1a; 公司有大数据团队。本着不麻烦别人就不麻烦别人的原则&#xff0c;写了一款简易的记录工具&#xff0c;原理也简单&#xff0c;手工在业务插入锚点&#xff0c;用分词器分好词&#xff0c;排掉字…

Ansible-playbook循环学习

循环语句简介 我们在编写playbook的时候&#xff0c;不可避免的要执行一些重复性操作&#xff0c;比如指安装软件包&#xff0c;批量创建用户&#xff0c;操作某个目录下的所有文件等。正如我们所说&#xff0c;ansible一门简单的自动化语言&#xff0c;所以流程控制、循环语句…

Ceph入门到精通-LVS基础知识

LB集群: &#xff08;Load Balancing&#xff09;即负载均衡集群,其目的是为了提高访问的并发量及提升服务器的性能&#xff0c;其 实现方式分为硬件方式和软件方式。 硬件实现方式&#xff1a; 常用的有 F5公司的BIG-IP系列、A10公司的AX系列、Citrix公司的 NetScaler系列…

VisualStudio配置pybind11-Python调用C++方法

个人测试下来Debug生成的dll改pyd&#xff0c;py中import会报错gilstate->autoInterpreterState 如果遇到同样问题使用Release吧 目录 1.安装pybind11 1.pip&#xff1a; 2.github&#xff1a; 2.配置VS工程 2.在VC目录中的包含目录添加&#xff1a; 3.在VC目录中的库目录…

【Web系列二十四】使用JPA简化持久层接口开发

目录 环境配置 1、引入依赖 配置文件 代码编写 实体类创建 JPA常用注解 Service与ServiceImpl Service ServiceImpl Controller Dao 三种实现Dao功能方式 1.继承接口&#xff0c;使用默认接口实现 2.根据接口命名规则默认生成实现 3.自定义接口实现(类似MyBatis…

汽车类 ±0.25°C SPI 温度传感器,TMP126EDBVRQ1、TMP126EDCKRQ1、TMP127EDBVRQ1引脚配置图

一、概述 TMP126-Q1 是一款精度为 0.25C 的数字温度传感器 &#xff0c; 支持的环境温度范围为 -55C 至 175C 。TMP126-Q1 具 有 14 位 &#xff08; 有符号 &#xff09; 温度分辨率(0.03125C/LSB)&#xff0c;并且可在 1.62V 至 5.5V 的电源电压范围内工作。TMP126-Q1 具有转…

同创永益入选首批“金融数字韧性与混沌工程实践试点机构”

8月16日下午&#xff0c;由北京国家金融科技认证中心、北京国家金融标准化研究院联合主办的“传递信任 服务发展”金融科技标准认证生态大会在太原成功举办。中国金融电子化集团有限公司党委书记、董事长周逢民&#xff0c;中国科学院院士冯登国&#xff0c;中国工商银行首席技…

Unity 粒子特效遮罩(ParticleMask)

1.需求&#xff1a; 游戏中粒子特效能实现非常好的效果&#xff0c;但是由于粒子特效是独立的系统&#xff0c;Unity自带的Mask普通的遮罩&#xff0c;遮不住粒子特效。 2.实现原理&#xff1a; 通过shader把超出范围的粒子纹理(Texture)&#xff0c;改成透明颜色&#xff0…

Python安装指南(Windows版)

安装python环境 官网下载地址&#xff1a; Download Python | Python.org 我选择3.10.4版本&#xff0c;当然你也可以选择其他版本 安装 安装完成&#xff0c;需要验证是否安装成功。 打开CMD窗口&#xff0c;输入python命令&#xff0c;如果进入如下python窗口则安装成功&…

docker打包vue vite前端项目

打包vue vite 前端项目 1.打包时将测试删除 2.修改配置 3.打包项目 npm run build 显示成功&#xff08;黄的也不知道是啥&#xff09; 打包好的前端文件放入 4.配置 default.conf upstream wms-app {server 你自己的ip加端口 ;server 192.168.xx.xx:8080 ; } server { …

怎样将几个pdf合并?

在日常工作中&#xff0c;我们经常需要处理大量的PDF文件。有时候&#xff0c;我们需要将多个PDF文件合并成一个文件&#xff0c;以便于快速传输或方便查阅。虽然PDF文件本身不能进行编辑&#xff0c;但是借助专业的PDF编辑软件&#xff0c;我们可以轻松地实现将多个PDF文件合并…

推荐两款开源的绘制流程图软件

一句话导读 目前流程图绘制软件非常多&#xff0c;包括本机安装的、web端的都有&#xff0c;如Visio、Graphviz、processOn等等。但是几乎都是收费的。本文给大家介绍两款优秀的开源免费的流程图绘制软件。 目录 一句话导读 一、draw.io 二、Meta2d.js ​1.为什么使用 2.…

4、DVWA——文件包含

文章目录 一、文件包含概述二、low2.1 源码分析2.2 通关分析 三、medium3.1 源码分析3.2 通关思路 四、high4.1 源码分析4.2 通关思路 五、impossible 一、文件包含概述 文件包含是指当服务器开启allow_url_include选项时&#xff0c;就可以通过php的某些特性函数&#xff08;i…