跨平台开发
来源:互联网 发布:kali linux 中文 编辑:程序博客网 时间:2024/05/16 15:10
跨平台软件的开发方式大体有三种
1. 移植
先在一个基准平台上开发好,通过改写部分代码移植到其他的操作系统下运行
1.1宏定义
用C/C++的编译宏指令来实现,#ifdef …#else…#endif
#ifdef WIN32#define LOCALTIME_R(t) localtime((t))#define SNPRINTF _snprintf#else#define LOCALTIME_R(t) localtime_r((t), (struct tm *)&tmres)#define SNPRINTF snprintf#endif
1.2. 编译环境识别
在C/C++编译器编译源码时,为了能够识别当前环境的状况,这包括编译器的类型和版本,操作系统的类型和版本,计算机CPU的类型,机器内部的字节顺序等,每种编译器内部一般规定了一些常用的宏定义,利用这些定义就可以区分出当前的编译环境了。
如果我们开发的软件需要在很多不同的平台很编译器上编译,这时候环境就比较复杂了,如果我们能够将编译环境的宏定义转换成我们自己内部的约定,然后全部使用内部的约定来处理宏,这会简化我们进行跨平台移植的操作。
// _ENV_WIN 32 or 64 bit Windows// _ENV_WINNT Windows NT// _ENV_WIN32 32 bit Windows// _ENV_WIN64 64 bit Windows#if (defined(WIN32) || defined(_WIN32) || defined(WIN64) || defined(_WIN64) || defined(__WIN32__))#define _ENV_WIN#if (defined(WIN32) || defined(_WIN32) || defined(__WIN32__))#define _ENV_WIN32#elif (defined(WIN64) || defined(_WIN64))#define _ENV_WIN64#endif#ifdef _WIN32_WINNT#define _ENV_WINNT#endif
1.3. 定义通用的数据类型
在目前的大多数计算机系统中,基本的数据类型在字节长度上基本一致,比如int类型占4个字节,char类型占1个字节等,但有些基本的数据类型还是有差别的,比如float、double和64位的整数类型,不同的平台还是有些差别的,为了方便进行跨平台的编程,定义一个通用的数据类型可以简化花费在数据类型上的时间。
1.4. 利用平台交叉工具移植
1.4.1. 从Unix/Linux到Windows
Cygwin(http://cygwin.com/)
Cygwin由仿真层和一组工具组成,cygwin1.dll:它作为UNIX的一个仿真层,提供UNIX API功能; Cygwin工具负责创建一个UNIX或Linux的外观界面。
NuTCRACKER(http://mkssoftware.com/)
1.4.2. 从Windows到Unix/Linux
Wind/U(http://bristol.com/)
Visual MainWin(http://mainsoft.com/)
2.跨平台模块组合
3.虚拟机技术,利用平台无关的语言进行开发
虚拟的代价也很大,主要体现在降低了执行的效率
- 跨平台开发?
- 跨平台开发c++,
- 跨平台开发
- 跨平台开发--标准
- PhoneGap跨平台开发
- 跨平台开发
- 跨平台C++开发
- 跨平台开发
- 跨平台混合开发
- 跨平台开发资料
- deviceone 跨平台开发
- 聊聊移动平台的跨平台开发
- 嵌入式开发要跨平台
- 线程跨平台游戏开发
- 跨平台GUI软件开发
- 跨平台GUI开发库
- wxWidgets 跨平台C++开发
- 手机跨平台开发浅谈
- AlertDialog的对话框模式
- MonkeyRunner入门技巧
- 飛飛(四十一)建立一个Point类,包含数据成员x,y.......
- 汇编语言 王爽第二版 总结
- Android从按下开机键到启动发生了什么
- 跨平台开发
- Eclipse中修改SVN用户名和密码方法
- android 屏幕适配
- 第十一周第一项目——又是程序阅读
- Fedora 22 系统安装
- 深入理解JavaScript的闭包特性 如何给循环中的对象添加事件
- 一个unity 牛的博客网址
- 图像特效---马赛克滤镜
- 在ubuntu14.04中设置FTP,以及使用ultralEdit/SecureFX连接