c++ - 当今各种框架的跨平台技术的实现原理?

查看:130
本文介绍了c++ - 当今各种框架的跨平台技术的实现原理?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

查过一点资料,现今的跨平台实现方法主要有两种,一种是一次编译,到处运行(就是java这种),还有一种是一次编码,到处编译

我现在主要有疑问的是第二种。

就拿C++语言来说,其本身是跨平台的,只要我们不调用特定系统平台的api,只用标准库,其本身是可以实现跨平台的。但是如果我们要调用系统api,那就肯定无法跨平台编译了。
所以各种跨平台框架应运而生,比如QT、cocos2d-x等等。他们都是做了一个系统平台无关的层,把各个系统的api封装起来,提供接口,然后在哪个平台下就调用哪个平台的api

首先我不知道上述我的说法有没有错误的地方,若有,还请大神们指正!

现在我还有一个疑惑就是,在哪个平台下就调用哪个平台的api是如何实现的,难道这些框架自己会判断自己处在什么操作系统下吗?那不然它怎么知道该调用哪个系统的api?还是说是别的方法原理来实现跨平台的?(比如把所有操作系统的api都放在框架的源代码里面封装起来,然后创建项目的时候选择哪个平台就行?)
我看cocos2d-x有好几个文件夹,分别对应各个平台(win32、linux、ios、Android等等),但文件夹里面就是个入口文件,不可能是整个系统的api都在里面

解决方案

你的理解基本正确。
对于程序或框架如何判断自己在什么系统或版本(相同的系统版本不同Api也是有所不同的)下,这个很简单,不同的系统或版本都有自己的特征,可能是独特的宏定义,特定的标志位,或者直接有对应的函数获取。
当然,目前平台虽然看似差别很大,但是逐渐已经形成了大家共同承认的一些规范,比如Windows、Linux、Unix目前都已经遵循了POSIX接口规范,这就使得他们中大部分的常用接口都是近似的,所以在跨平台框架里,这大部分的代码是可以共用的,只有少部分也极少用到的接口需要区分开分别来写。

这篇关于c++ - 当今各种框架的跨平台技术的实现原理?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆