跨平台技术实现原理
现有跨平台技术就是通过库函数调用实现的,不使用系统函数调用。
- Qt如何识别不同系统
- Qt各个操作系统都有特定的宏,然后代码里面根据不同的宏调用不同平台的API
对于程序或框架如何判断自己在什么系统或版本(相同的系统版本不同Api也是有所不同的)下,这个很简单,不同的系统或版本都有自己的特征,可能是独特的宏定义,特定的标志位,或者直接有对应的函数获取。
当然,目前平台虽然看似差别很大,但是逐渐已经形成了大家共同承认的一些规范,比如Windows、Linux、Unix目前都已经遵循了POSIX接口规范,这就使得他们中大部分的常用接口都是近似的,所以在跨平台框架里,这大部分的代码是可以共用的,只有少部分也极少用到的接口需要区分开分别来写。
跨平台库都是根据各个平台的系统API库进行封装的。
各个操作系统都有特定的宏,然后代码里面根据不同的宏调用不同平台的API。你可以参考一些优秀的开源库的实现。
比如 POCO的Foundation
这里面有大量的根据不同平台写的各种实现。
https://github.com/pocoproject/poco/blob/develop/Foundation/src/NamedMutex_Android.cpp
https://github.com/pocoproject/poco/blob/develop/Foundation/src/NamedMutex_UNIX.cpp
https://github.com/pocop