没有合适的资源?快使用搜索试试~ 我知道了~
《C/C++编写跨平台程序:实践篇》
2星 需积分: 10 19 下载量 79 浏览量
2014-08-09
09:12:25
上传
评论 2
收藏 20.06MB PDF 举报
温馨提示
试读
351页
《C/C++编写跨平台程序:实践篇。本书可做为有一定 C/C++基础的读者学习跨平台编程的学习用书,也可做为深入 C/C++语言 的参考用书。
资源推荐
资源详情
资源评论
前言
本书可做为有一定 C/C++基础的读者学习跨平台编程的学习用书,也可做为深入 C/C++语言
的参考用书。
要编写跨平台程序首要是确定选择哪种编程语言。Microsoft 的 Windows 可以选 C/C++、C#、
Java 等,Apple 的 Mac OS X/iOS 有 C/C++、Object-C,Linux 有 C/C++,可以发现一般系统都
支持 C/C++,事实确实 C/C++是功能最强跨平台语言。当然,功能最强并不意味着它就是最贴
近实现自已目标的语言,像 Mac OS X/iOS,相比 C/C++,Object-C 有更多系统 API 支持,可以
更快、更方便显示对话框、操作文件系统。但像 Object-C 这种语言局限于平台,它们未来发展
方向往往也取决于平台供应商。
不只是初学 C/C++,即使学过一段时间的程序员也会认为 C/C++没有较好可移植性,因为它
把系统级 API 和内存对象的布局直接暴露给了开发人员!C/C++的确无法做到在系统级 API 层
跨平台,这里使用的是把那部分代码提取出来形成个轻量级 SDK,即 SDL 库,SDL 处理系统
级 API 差异,然后向上层提供统一 API。SDL 是轻量级库,只提供基本的画图、播放声音、处
理输入事件,至于复杂的像处理窗口、播放动画等功能就要由应用程序自已去实现,在实现这
些功能时 C/C++就会发挥跨平台优势,用它写出的代码几乎“完全”跨平台。
SDL 这个轻量级 SDK 除了消除系统级 API 差异、向上层提供统一 API,还要“封装”除 C/C++
外其它语言。在 Apple 的 Mac OS X/iOS,一些操作对应用程序是必须的,像创建窗口,但这些
操作只能通过 Object-C。SDL 调用系统级 API,调用时不得不使用 Object-C,但这是 SDL 库内
调用,到它向上层提供的 API 时已统一为“纯正”的 C/C++。采用模块化编程后,对应用程序
来说只要知道封装库向它提供的 API,要是他不那么想知道低层的封装库知识,即使程序要运
行目标平台是 Apple 的 Mac OS X/iOS,他都不必去学 Object-C 语法。
选定 C/C++作为跨平台编程语言,接下要决定用何样开发工具。好的开发工具可以节约写代
码时间,尽快找出 BUG,即使目的只是读懂他人代码,使用边调试边看也是比不断地读要高效
得多。C/C++开发工具有跨平台、非跨平台说法,跨平台的像 automake,但这书选择使用非跨
平台工具,理由一个就够:平台自提供的 C/C++ IDE 具有最强编辑、编译、调试功能,基于这
个原则,Windows 下用 Visual Studio,Mac OS X/iOS 下用 Xcode。由于不同平台下不同 IDE,
它们在把源文件组织成工程时会有不同操作,相比跨平台 IDE 这差异自然会给代码移植带来工
作量,但这工作量相比于节约编写代码时间、提高调试效率就几乎可忽略了。
虽然不同平台下不同 IDE,但由于源代码统一采用 C/C++,C/C++跨平台优点除使得程序员
不必花时间学习多种语言,还使调试过程变得更简单、甚至高效。调试在软件开发中占很大比
重,好的调试程序能帮助程序员更快、更高效找到、除去 BUG。就目前来说,Windows 上的
Visual Studio 拥有最强 C/C++调试器,跨平台程序统一为一份 C/C++代码后,意味着这些代码
只要在 Visual Studio 调试通过,它就可以在其它平台上“任意”运行,由于 CPU 性能、物理内
存差异造成的问题则可以通过“故意”在程序中设置门限来摸拟进而解决掉。这就是说,即使
程序要运行的目标平台是 Mac OS X/iOS/Android,它也可以借由 Visual Studio 进行调试!
写的是跨平台程序,这样程序不能使用不支持跨平台的库,即使它是 C/C++写的,像 Windows
上的 MFC、ATL。“不要重复发明轮子”,写个软件由底向上全由自个完成已不是推荐方法,也
没必要这么做,程序除可以使用 C/C++官方支持的跨平台库,像运行库、STL;准官方库,像
Boost,还可使用已存在的很多开源库,只要在发行时满足开源库要求的版权规则。本书会有专
门章节介绍两个开源库:SDL 和 gettext,没有专门章节但会叙述到的 lua、iconv,另外,读者
若有兴趣可自行深入 ogg、vorbis、png、jpeg、freetype 等。
如何更快学会掌握一种语言,直接去看成熟程序代码是种较好办法;要学会跨平台编程,就
可直接去看已有跨平台程序。本书将会以《王国战争》为例,在《王国战争》和书的关系上,
书按 C/C++编程会碰到问题分章介绍,在介绍具体问题时以《王国战争》给出一个此问题答案,
通过此种结合,希望达到较好的理论结合实践、实现双方互补效果。《王国战争》代码是全开源
的,要是兴趣强烈读者可以自底向上学会更全面的跨平台编程知识。
《 王 国 战 争 》 是 一 个 回 合 制 战 棋 游 戏 , 代 码 基 于 开 源 游 戏 《 韦 诺 之 战 》
(http://www.wesnoth.org),截止到现在,相比《韦诺之战》它去除了依赖 pango 库,使用最新
SDL 库,使跨 Windows/Mac OS X/iOS/Android 平台更灵活。就成熟度来说,它已“完全”支持
Microsoft 的 Windows,Apple 的 Mac OS X、iOS,Google 的 Android。对另一桌面系统 Linux,
Linux 的 C/C++编译器和 Mac OS X、iOS、Android 用的实质是同一个 GCC,而《韦诺之战》
本身对 Linux 有“完全”支持,可惜个人用惯了 IDE,而 Linux 又没一个较统一的 C/C++ IDE,
使得 Linux 平台一直拖着。
本书虽基于《王国战争》,但不会是简单的代码注释,为增加新功能、支持更多平台,代码
本身在不断更新。但本书会围绕《王国战争》代码,因而要读懂本书需要花较多的时间阅读、
改写代码。这不是一本讲解 C/C++语法的书,它注重实践,要懂读书中内容对读者有一定要求。
知道必要的 C/C++语法。至少要懂初级 C/C++语法,至于 STL、Boost 等标准库则可在看书
过程中不断学习,可以不会除 C/C++外其它语言,像 Object-C。
必须有一台 PC,能安装 Windows 系统,必须能安装 Vistual Studio 2008(打钩 C/C++包)。
本书在介绍时基于的开发 IDE 是 Visual Studio 2008。必须安装 2008 或以上版本,像 2005 都是
不行的。
须要对 Windows 编程感兴趣。介绍时基于的差不多都是 Windows,只有少量地方会涉及到
其它平台。代码来自《王国战争》,这要求不反感游戏,要是喜欢三国会更好。
本书结合《王国战争》代码介绍编写跨平台程序方方面面,内容上分十章。第一章,建立调
试环境,主要介绍如何安装调试 SDL、gettext 库,及整个游戏工程。第二章 SDL,说下基于 SDL
库渲染图片、字符串,播放声音,处理输入事件。第三章,WML 和 Lua,介绍两种配置语言,
WML 描述静态,Lua 描述动态。第四章,地形,程序中地图不是一张大位图,是由很多等尺寸
“小”格子组成。第五章,GUI:主题,主题是程序主界面。第六章,GUI:窗口,各个操作系
统以自已 API 实现对话框和控件,这里介绍种通用实现方法。第七章,动画,引入动画会提高
程序的视觉效果。第八章,国际化和 gettext,程序不能只支持一种语言,介绍如何实现多国语
言。第九章,网络,以一个对战例子叙述网络编程。第十章,其它话题,介绍之前没叙述的一
些话题,包括 A*算法,重采样算法,处理 iOS 事件,Boost 库。
目录
第一章 建立调试环境
1.1 处理开发包
1.1.1 开发包
1.1.2 获取开发包
1.1.3 开发包存放位置
1.1.4 处理开发包
1.2 Visual Studio 2008(Windows)
1.2.1 目录结构
1.2.2 SDL
1.2.3 gettext
1.2.4 kingdom.exe/kingdomd.exe/editor.exe
1.2.5 运行
1.2.6 编译、链接选项
1.3 XCode 4.2(Mac OS X)
1.3.1 目录结构
1.3.2 SDL
1.3.3 gettext
1.3.4 kingdom.app
1.3.5 运行
1.3.6 编译、链接选项,framework
1.4 XCode 4.5.2(iOS)
1.4.1 目录结构
1.4.2 SDL
1.4.3 gettext
1.4.4 kingdom.app
1.4.5 运行
1.4.6 编译、链接选项
1.5 SDK ADT Bundle for Windows + NDK-r8d(Android)
1.5.1 目录结构
1.5.2 SDL
1.5.3 gettext
1.5.4 libkingdom.so
1.5.5 kingdom.apk 及运行
1.5.6 编译、链接选项
1.6 操作系统宏
1.7 检测内存泄漏(Memory Leak Detection)
1.7.1 C 运行库
1.7.2 为检测内存泄漏,代码上做的支持
1.7.3 检测内存泄漏原理
1.7.4 同时检测 exe、dll 中泄漏
第二章 SDL
2.1 主图面
2.1.1 创建窗口
2.1.2 得到像素格式
2.1.3 创建图面
2.2 渲染图像
2.2.1 图面(SDL_Surface)
2.2.2 像素格式(SDL_PixelFormat)
2.2.3 块移(Blit)
2.2.4 点对点块移
2.2.5 RLE 块移
2.2.6 块移小结,加锁/解锁图面
2.2.7 管理图面
2.3 渲染字符串
2.3.1 渲染字符串原理
2.4 渲染音频
2.4.1 音频格式
2.4.2 播放声音
2.4.3 混合声音
2.5 处理事件
2.5.1 收集
2.5.2 检索
第三章 WML 和 Lua
3.1 处理配置数据顶层逻辑
3.1.1 两种处理配置数据逻辑
3.1.2 编辑器(editor.exe)
3.1.3 xwml 目录下 bin 文件
3.2 WML 和 class config
3.2.1 WML
3.2.2 class config
3.3 WML 语法
3.3.1 可翻译字符串
3.3.2 宏
3.3.3 公式(formula)
3.3.4 逐进变量(Progressive Variable/Parameter)
3.4 C 和 Lua 相互调用
3.5 混合 WML、Lua 编写配置
第四章 地形
4.1 通过一个例子直观理解地形系统
4.1.1 地图编辑器画地图
4.1.2 地图上地形图像形成过程
4.2 构造规则(build rule)
4.2.1 定义一条规则
4.2.2 向规则添加约束
4.2.3 六角坐标系统
4.2.4 type 字符串
4.2.5 向地形添加图像
4.2.6 标志(flag)
4.2.7 使用映射字符串(Map string)
4.2.8 使用旋转模板(rotation templates)
剩余350页未读,继续阅读
资源评论
- sxbjmfk2014-12-03不太实用呀。
sigal8075
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 2010-2019年分省技术市场成交额面板数据(万元)
- 2008-2022年上市公司对外投资情况数据.zip
- Rust开发安装与启动的教程与代码实例.txt
- 环境工程原理+环境监测+环境微生物学+仪器分析-上交
- 世界各国2022年ICT基础设施-互联网使用-固定宽带订阅-电信服务的收入-移动网络收入
- 寿光蔬菜产量数据.xlsx寿光蔬菜产量数据.xlsx寿光蔬菜产量数据.xlsx
- 全国62个主要城市建筑轮廓矢量数据(全国62个城市模型)
- Object-C开发安装与启动的教程与代码实例.txt
- 全国297个地级市城市2003-2021科学研究试验发展R&D人员数R&D内部经费支出
- LP方法上市公司全要素生产率TFP计算Stata代码(附2000-2019年数据和结果)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功