基于C++语言的跨平台软件开发的实现

时间:2024-03-15 点赞:51935 浏览:106520 作者原创标记本站原创

本文关于软件开发及操作系统及平台方面的免费优秀学术论文范文,软件开发方面有关论文范文素材,与基于C++语言的跨平台软件开发的实现相关专升本毕业论文范文,对不知道怎么写软件开发论文范文课题研究的大学硕士、本科毕业论文开题报告范文和文献综述及职称论文的作为参考文献资料下载。

在当下主流的编程语言当中,C++语言很好的保持高效的同时又加入了面向对象的特性以及自身的语言特性,但却不能像其他高级语言一样有着很好的可移植性,本文主要论述基于C++语言的多元化软件开发的设计与实现.

C++; 跨平台; 软件开发; 实现

【中图分类号】TP317.2 文献标识码:B文章编号:1673-8500(2012)12-0050-02

一个跨平台软件产品的开发和实践,关键在于对于开发过程的整体设计,在实现平台无关的代码的基础上还要对软件的配置与架构有合理的设计.而开发公共代码的内容涉及到多方面的问题,从源文件的文件格式,到C/C++语言的代码设计.在跨平台开发的过程中,需要根据各个差异的类别,建立一个能够被重复调用的代码库,同时还要在程序的运行过程中进行必要的安全检查,动态的控制不同平台之间代码的使用.

1.C++语言跨平台的开发策略

在开始代码编写之前,首先要规定源代码在文本编写过程中的编辑策略,在不同的操作系统上创建和编辑文本文件必然涉及到多种类型的行结束符.当在这些平台之间编写源代码的时候,这就成为了一个问题.如果一个文件是在Unix下创建的,那么在Windows计算机上很可能不会被正确的编辑.此外,不同平台间tab的间距也有着不同的定义,因此在编写代码的过程中,需要规定统一的tab与行结束符,从而保证代码的阅读性在各个平台间都是相同的.所以在开发的初期需要针对这个问题制定两点规则:

1.1 统一使用4个空格键来代替tab,也就是\t格式

1.2 Windows下的源文件代码需要存储成Unix的文件格式,或是在Windows下的文件编写完成之后,通过dos2unix命令实现文本格式的转换.

目前来讲,这部分的问题还有一个更简易的解决方式:使用Emacs编辑器,Emacs虽然没有久远的历史,但是它已经迅速的得到了广泛的应用,原因在于其独特的开发方式,编辑人员几乎可以完全放弃使用鼠标而专心使用键盘来完成自己的代码,同时它对几乎任何一个平台都能给予很好的支持,同时非常易于安装,甚至有很多的开发人员视Emacs为一种编写源代码的理念,而远超于一个简单的编辑器.

2建立统一的工程包

一个多元平台下的软件产品在开发过程中需要保证各个源代码以及配置文件,依赖库的移植性,只有这样才可以做到:当一个Linux平台下开发的工程包被移植到另外一个平台上时,可以直接对其编译或者使用.否则,如果一个工程包在移植到其他平台以后还需要进行大规模的编辑这样不但影响了软件开发的进度,同时也会影响该项目在各个平台之间的一致性,长期的改动将会直接导致项目没有任何的维护性,因此,在整个开发周期中必须保证各个平台下所使用的开发工程包是完全统一的.

在SandBox中包含这样几种文件夹,它们分别是一个封装好的代码库,它们专门用来处理那些平台相关的软件;源文件程序库,其中包含了该软件开发的源程序;第三方依赖库集合;另外就是配置文件集合和日志管理文件,当然,在各个文件夹中还会包含着Make策略所涉及到的各个Make文件.在它们其中,大部分的文件所完成的功能是统一的,只是根据不同的平台有着不同的规则而将它们区分开来,形成了多种配置文件和依赖文件.

3建立跨平台的代码库

由于C++语言的语言特性,以及其标准在各个平台、编译器上的不同定义,跨平台的软件开发需要更合理的规划代码,抽象是真正实现代码跨平台的核心,没有适当的抽象很难构建一个跨平台的应用程序.抽象在C++里普遍的使用,c++的标准模板库和Boost是两个最好的例子.Boost标准类随着其不断地被完善,可以帮助一个跨平台的产品解决操作系统库内各个接口的差异,但是这些标准还不能够解决所有的问题,一方面它目前并没有涵盖所有的范畴,此外毕竟由于它们的封装,使项目又增加了不确定性,而在STL中并不是所有的模板都有着很高的可移植性,在可能的情况下,我个人更倾向于自己手动编写所需要的各个抽象类.进一步而言,就算这些标准库可以完全的被使用,然而这对于一个跨平台的软件项目来说还是远远不够的.所以,在项目开发过程中需要编写自己的抽象库,随着开发的不断进展,根据需求的变化结合C++语言的语言特性设计这部分代码.

4工厂模式与单例模式的实现

在跨平台开发的过程中,这两种设计模式的使用有着重要的意义,C++语言的代码有着诸多的特性不被多元化的平台所共享,因此,通常需要在代码库中抽象出这一部分的代码,然后分别在Windows,Linux平台下通过各自的方式实现功能,再通过条件编译来动态的调用不同平台下的函数;而单例模式则是为了保证每一个类的在程序中只有一个对象被实例化,防止过多的实例间产生的冲突.这两种设计模式的实现则需要利用面向对象的思想,通过继承来实现这种多平台的多态性,而除此之外,跨平台的工厂模式还需要利用条件编译来实现动态的调用.

5利用平台依赖库封装平台相关代码

在实际的开发过程中,对于应用程序的核心功能还可以在编译过程中通过链接不同的依赖库来处理C++语言跨平台开发过程中平台相关的代码.这种方法的核心在于把平台相关的各部分代码在不同的平台下实现并封装成依赖库,然后在不同的平台下调用不同的依赖库以达到统一代码的目的.这种方法首先需要在编译时定义一个编译选项变量REQUIRED_LIBRARIES,然后根据不同的平台赋予这个变量不同的值,从而统一的添加到编译选项当中.而对于代码的处理则定义一个头文件,在这个头文件定义处理这些核心处理函数的统一接口,而这些接口的实现则体现在不同平台下的依赖库当中.


同样的接口在不同的平台下就可以被引入不同的动态库,从而使平台不相关的实现不体现在应用程序的源代码中.这种方法适用于对应用程序核心功能的处理,因为不论在什么平台应用程序都需要做出一样的处理,使用同样的接口.而在运行的效率上由于这种方式不需要大量的条件判断,在程序初始化的过程中这些链接库就会被调进内存中,这样一方面提高了运行效率,同时也可以优化代码的结构,有效的优化了C++语言跨平台的应用程序.

相关论文

基于C语言的计算机软件编程实验

本文是一篇计算机软件编程论文范文,计算机软件编程类有关自考毕业论文开题报告,关于基于C语言的计算机软件编程实验相关在职研究生毕业论文。

计算机程序语言与软件开发

此文是一篇软件开发论文范文,软件开发方面有关论文范文集,与计算机程序语言与软件开发相关自考毕业论文开题报告。适合不知如何写软件开发及。

计算机软件开发语言的

关于软件开发及计算机软件开发及计算机软件方面的免费优秀学术论文范文,软件开发方面有关职高计算机教学论文,关于计算机软件开发语言的相。

关于计算机软件开发语言的

本文是一篇计算机软件开发论文范文,关于计算机软件开发学年毕业论文,关于关于计算机软件开发语言的相关毕业论文提纲范文。适合计算机软件开。

计算机程序语言与软件开发

本文是一篇计算机程序论文范文,关于计算机程序类专科毕业论文开题报告,关于计算机程序语言与软件开发相关函授毕业论文范文。适合计算机程序。