开始学习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:

图1

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

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

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

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

图3

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

图4

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

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

图5

  然后再编译。成功!

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

图6

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

图7

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

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

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

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

wxWidgets开始编程的更多相关文章

  1. CodeBlocks 3 使用设置

    使用MingW作为CB的默认编译器和wxWidgets进行编程,当然需要好好配置一番,因为mingw在windows下用起来着实没有win32原生态程序运行快,也没有他小,好处是借助wxwidgets ...

  2. zwx_helper

    通过重载c++operator,实现一种轻松的wxWidgets界面编程风格,如html编写页面一样直观容易. 举一例,一个界面页有四块区,如果是开发html的话,是从头到脚一气书写 <div ...

  3. wxWidgets编程起步

    開始学习wxWidgets,上一篇写了"安装wxWidgets遭遇的两大关卡"(简称"前文"). 先推荐一下这两天找到的学习材料. 博客中有一个系列教程,貌似作 ...

  4. python 网络编程

    一.网络知识的一些介绍 socket是网络连接端点.例如当你的Web浏览器请求www.pythontik.com上的主页时,你的Web浏览器创建一个socket并命令它去连接www.pythontik ...

  5. [wxWidgets] 2. 重访“Hello World” 程序

    这是四年多来在博客园的第二篇博客.有了上一次的排版使用经验,这一篇文章应该有些进步(^_^). 闲话按下不表,言归正传.在编译.成功运行了上一个helloWorld.cpp(后文中'hw'简称hell ...

  6. [ZETCODE]wxWidgets教程六:事件处理

    本教程原文链接:http://zetcode.com/gui/wxwidgets/events/ 翻译:瓶哥 日期:2013年12月7号星期六 邮箱:414236069@qq.com 主页:http: ...

  7. [ZETCODE]wxWidgets教程一:介紹

    本教程原文链接:http://zetcode.com/gui/wxwidgets/introduction/ 翻译:瓶哥 日期:2013年11月26日星期二 邮箱: 414236069@qq.com ...

  8. 初次踏上GUI编程之路(有点意思,详细介绍了菜鸟的学习之路)

    初次踏上GUI编程之路 —— 我的Qt学习方法及对Qt认识的不断转变 -> 开始接触GUI与开始接触Qt: 话说,我第一次看见“Qt”这一个名词,好像是在CSDN网站的主页上吧,因为CSDN好像 ...

  9. 不建议用wxWidgets,底层有过多的bug

    不建议用wxWidgets, 搞了wxWidgets 3年,不是所说的那么容易跨平台,很多bug,不稳定, 莫名其妙的崩溃找源代码修改编译真是费时费力. 开发速度真没有使用本地sdk开发高, 很难定制 ...

随机推荐

  1. 使用 Google Guava 美化你的 Java 代码:1~4 【转】

    文章转载自:http://my.oschina.net/leejun2005/blog/172328 1.使用Google Collections,Guava,static imports编写漂亮代码 ...

  2. 【9201】&&【a201】明明的随机数

    Time Limit: 10 second Memory Limit: 2 MB 问题描述 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整 ...

  3. [Javascript] Create scrollable DOM elements with Greensock

    In this lesson, we will look at Greensock's Draggable API. We will implement a scrollable <div> ...

  4. Strut2与Hibernate的一个web分页功能

    代码没有进行过多的封装,可能看起来有点action代码部分,hibernate在这里只起到了一个查询记录集的作用. import java.util.ArrayList; import java.ut ...

  5. 一大波Java来袭(四)String类、StringBuilder类、StringBuffer类对照

    本文主要介绍String类.StringBuffer类.StringBuilder类的差别  : 一.概述 (一)String 字符串常量.可是它具有不可变性,就是一旦创建,对它进行的不论什么改动操作 ...

  6. 代码包结构分析工具JDepend的使用方法

    JDepend可以对Java软件包结构质量进行分析,已经有很多文章介绍其基本作用和能够计算的指标了,这里我就不详细总结,感兴趣的朋友可以参看如:http://blog.csdn.net/hantian ...

  7. 【t014】拯数

    [题目链接]:http://noi.qz5z.com/viewtask.asp?id=t014 [题意] [题解] 这个锁的序列,如果把末尾的0去掉; 然后再倒过来; 那么就是这个序列对应的格雷码了; ...

  8. 收集 天创恒达高清采集卡TC-5A0N7

    版权声明:本文博客琅邪工作室原创文章,博客,未经同意不得转载.

  9. android制,点击EditText时刻,隐藏系统软键盘,显示光标

    由于项目中要用自己定义的随机键盘,所以必须得屏蔽系统软键盘,可是在4.0的測试系统来看,使用editText.setInputType(InputType.TYPE_NULL)方法固然能隐藏键盘,可是 ...

  10. Linux 网络编程——TCP

    环境:Linux  C   一.协议介绍      TCP是面向连接的协议,提供可靠的数据传输:TCP协议的可靠传输基于三次握手.四次挥手以及确认重传机制实现.下面来具体展示下TCP的三次握手.四次挥 ...