IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++跨平台学习(一):入门了解 -> 正文阅读

[C++知识库]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把语言翻译成各大平台可以理解的语言,这一点是C\C++所没有的。

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

一次编译,到处运行

计算机语言的跨平台

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

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

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

从个人的角度出发,最近实现了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

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-11-09 19:17:43  更:2021-11-09 19:17:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 5:42:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码