栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

C++跨平台学习(一):入门了解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++跨平台学习(一):入门了解

C++跨平台学习(一):入门了解
    • 跨平台开发说的是什么
    • 我们想通过跨平台来实现什么
    • 计算机语言的跨平台
    • CC++跨平台:“一次套代码,到处运行”
      • 一点点小的经验
    • C++跨平台工具
    • 总结
    • 参考资料

本文不涉及代码和过于深入的东西,只是小白在学习过程中,记录跨平台中的一些case,希望对同样刚接触跨平台开发的小白有所帮助。

跨平台开发说的是什么

跨平台开发,最典型的就是移动时代,厂商开发一个app往往需要Android和ios上俩套东西,同时还有着非常复杂的机型。
为了解决不同操作系统终端的开发难题,跨平台技术成为了首选,为企业和开发者节省成本。

那么跨平台是什么意思呢?

  1. 第一种:一份代码,到处编译。比如C语言,rust。
  2. 第二种:一次编译,到处运行。比如Java。
  3. 第三种:不用编译,各自解释。比如Python,Javascript。

一次编译,到处运行 的跨平台
比如说我们在 Windows 下面写出来的一段 Java 程序,换成 Linux,macOS 系统里面,一样可以正常运行并且输出相同的结果,但是这一点,换成 C/C++ 却很难办到。那么跨平台的特性,就是 JVM 决定的了。
这里简单介绍jvm,方便大家了解。

Java 虚拟机(Java Virtual Machine,简称 JVM)是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java 虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。JVM 屏蔽了与具体操作系统平台相关的信息,使 Java 程序只需生成在 Java 虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM 在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。

总结来说,java借助jvm把语言翻译成各大平台可以理解的语言,这一点是CC++所没有的。

我们想通过跨平台来实现什么

一次编译,到处运行

计算机语言的跨平台

从上面的介绍中,我们认为大部分的计算机语言都是“跨平台”语言,因为它们都可以在不同的平台上编译源代码(少数不能跨平台:汇编语言)。
只不过时代变了,我们想要的不一样了。
但是我们想要的结果是,只编译一次代码,可以在各个平台运行,这就是CC++做不到的了。

这里我们先记住个结论
CC++编译出来的二进制文件,是不可以跨平台的。
所以 C/C++应该算有限跨平台语言,必须依赖于严格的规范 才可以跨平台运行。

CC++跨平台:“一次套代码,到处运行”

从个人的角度出发,最近实现了c++的跨平台,也就是实现了近似的“一次编译,到处运行”,直白地说,C++的“跨平台”方式是“一套代码,到处运行”。

一点点小的经验

从事跨平台开发的第一步,就是找一个靠谱的跨屏台第三方库,之后的代码在此基础上展开,业务代码不涉及到系统相关性,一般也是跨平台的。
这里推荐几个开源的第三方跨平台库:

  1. STL—C++标准库,应该不用过多介绍了。
  2. Boost—准标准库,功能强大涉及能想的到的大部分非特别领域的算法,有一个大的C++社区支持。
  3. Log4cpp-------日志处理 ,功能类似java中的log4j
  4. Crypto++ -----加/解密算法库, 非常专业的C++ 密码学函式库
  5. QT ----大名顶顶的一个多平台的C++图形用户界面应用程序框架(GUI库)
  6. ACE—庞大、复杂,适合大型项目。开源、免费,不依赖第三方库,支持跨平台。http://www.cs.wustl.edu/~schmidt/ACE.html
C++跨平台工具

上面说的是语言层面的工作,写代码的时候这么写就是达到了跨平台的需求,下面就是工程化恶的问题了。
工具主要分为编译工具和包管理工具。
这里作者只用过俩套,所以只推荐这俩套,至少没什么大坑,比较成熟

  1. 编译工具cmake+包管理工具vcpkg
  2. QT
总结

记住我们的结论: C/C++应该算有限跨平台语言,必须依赖于严格的规范 才可以跨平台运行。
另外跨平台开发,千万不要重复造轮子,学会借助已有的第三方库,省时省力!

参考资料

个人使用过的跨平台 c++ 开源库
值得推荐的C/C++框架和库
一款专为开发C及C++所设计的跨平台IDE

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/444672.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号