wxWidgets开始编程

开始学习wxWidgets。上一页写“安装wxWidgets两遇到的障碍”(缩写“前言”)。



先推荐一下这两天找到的学习材料。

博客中有一个系列教程,貌似作者没有写完。见《跟我学wxWidgets开发》系列教程

要看书。就《使用wxWidgets进行跨平台程序开发》

我给的链接中。包含中书中的源代码。这本书,是《Cross Platform GUI Programming With wxWidget》的中译本。译本中没有附录部分,我看了英文版的,可读性还不错。


通过浏览书,发现了前文中说过的问题。

看书、实践交叉着来。学习效率自然高。


wxWidget自带的文档也是非常好的參考资料。满世界找不到參考的时候,不要忘记现成的“权威”一手资料。

在线手冊在http://docs.wxwidgets.org/3.0/。从http://www.wxwidgets.org/downloads/可下面载文档离线看,有html、chm两种格式。

还有,下载来的demo和sample,当中都是好案例。怎样用。后文中要讲。


最全的资料。在wxWiki——http://wiki.wxwidgets.org/Main_Page。还有官网的在线教程http://www.wxwidgets.org/docs/tutorials/。再次感受开源的力量。



前文通过编译wxWidgets2.8.7。搞清楚了主要的“路数”。看了推出几个月的3.0.0版,看给出的改进不少,决定卸载昨天做的工作。再来一遍。

放弃wxPack还是有些不甘。

想着我的大一学生,在他们自己的本本上,假设安装wxPack就能用,那该是更好的事。他们首先要体验的,是用wxWidgets做出程序来。而不是在编译wxWidgets中遇上一堆问题,然后就没有然后了。

用最新的wxPack,安装了wxWidgets2.8.12,观察库文件。确实该有的都有了。

用Code::Blocks12.11中wxWidgets2.8.x向导做出两个測试的程序。却都在执行时发生了内存溢出的问题。

分析原因,应该是GCC版本号问题。wxPack安装的wxWidgets2.8.12是用GCC4.4.1编译的,而我的CodeBlocks12.11中用GCC4.7.1,溢出不意外。

这一点。有网友给出评论,“不用wxpack是对的,wxPack is no longer recommended for use, as it is built with a much older version of GCC.”



下载、编译wxWidgets3.0.0,已经不是什么问题(见前文)。仅仅编译了用于生成Debug目标文件版本号库文件。

可是用Code::Blocks在编出程序时。却出了问题。

先在Code::Blocks中建立wxWidgets Project,用向导整出个程序来玩,这是刚開始能做的事。可是。Code::Blocks12.11中,最高版本号仅仅能建立wxWidgets2.8.x版的应用,编译时。总找不到libwxmsw28ud.a等文件。难怪,这里仅仅有libwxmsw30ud.a。该在Code::Blocks中可以改动设置,不想找了。


建立,wxWidgets3.0.0中的应用,成了须要做的事情。

实际上,要执行书中和网络中找到的案例,不能靠向导。


为介绍建立过程,我用《使用wxWidgets进行跨平台程序开发》中第2章的案例。过程是这种(建议至少浏览过第2章后再试。请先去下载书和源代码):


建一个空项目,如图1:

wxWidgets开始编程图1

我建的项目,名称为minimal。将项目上的源文件minimal.cpp复制到项目所在目录中,在codeBlocks中项目名上点右键。选Add file...将这个文件增加项目。

文件mondrian.xpm是图标文件。也一并拷贝过去(不做,后面也须要补上)。另外,在文件minimal.cpp上点右键,选properties...,在对话框中将文件的仅仅读属性去掉。增加源文件后的界面如图2所看到的: wxWidgets开始编程图2

假设这时编译。会有一堆错误。首先面对的问题,编译时找不到须要的头文件。

选菜单setting->Global variables...,保证配置相似图3(依据你安装wxWidgets的目录):

wxWidgets开始编程图3

选菜单Project->Build options...。在选项卡Search directories中,设置Compiler,如图4所看到的:

wxWidgets开始编程图4

这时再编译,将不再有语法错误,但一大堆问题,来自于连接环节。问题是找不到库文件。

选菜单Project->Build options...,在选项卡Linker settings中,增加X:\wxWidgets-3.0.0\lib\gcc_dll目录中的全部.a文件,如图5所看到的:

wxWidgets开始编程图5

然后再编译。成功!

可是执行程序时,会出现错误,如图6:

wxWidgets开始编程图6

按提示来,在X:\wxWidgets-3.0.0\lib\gcc_dll中找到那wxmsw30ud_gcc_custom.dll文件,将其复制到项目所在目录,看到了期盼的窗体。如图7所看到的。

wxWidgets开始编程图7

出现图6的错误。原因是我在Linker settings增加的是lib\gcc_dll目录中的.a文件。这些属于“动态链接库”(这个术语自己百度去吧)。

这种方式的优点在于编译速度快。目标代码小,可是在编译好的程序执行时,必须要能找到须要的.dll文件。最简单的办法,就是拷贝.dll文件。

先这样做起来,越学越多,知识就这样积累起来了。





================= 迂者 贺利坚 CSDN博客专栏=================
|== IT学子成长指导专栏 专栏文章的分类目录(不定期更新) ==|
|== C++ 课堂在线专栏  贺利坚课程教学链接(分课程年级) ==|
|== 我写的书——《逆袭大学——传给IT学子的正能量》    ==|
===== 至IT新秀出发铺的跑道,和同学一起享受大学的喜悦和激情 =====








原文链接: https://www.cnblogs.com/gcczhongduan/p/4590514.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/217967

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月13日 上午10:03
下一篇 2023年2月13日 上午10:03

相关推荐