笔记本电脑API

臧配元臧配元最佳答案最佳答案

这个问题问得有点含糊,我猜提问者是想问“笔记本的编程接口”吧,也就是笔记本硬件能够执行C语言或者C++语言的函数库和头文件。回答这个问题需要先了解下微软开发的进程。 最早的时候,Win32系统下的开发环境是Vista和Win64,这里以win64为例介绍下,具体可以看微软官网(需要安装.net框架) 然后就是大名鼎鼎的Visual Studio,在VS里面进行VC、CPP的开发,最终生成ABI(Windows 平台的二进制码)。 但是到了X86平台,问题出现了。x86平台上无法直接调用Win64的函数。为了通用性,微软做了个决定——把需要执行的函数做成DLL,让这些函数可读写,这就是常说的Pascal ABI。这样无论什么平台,只要装了相应的DLL,就能执行对应的函数。 这个Pascal ABI最开始是针对Win32的应用程序开发的,后来被用到Win64的代码中。也就是说,现在的Win64系统都支持Pascal ABI。 那有没有不支持的呢?当然有,最早的x86平台就不支持。所以最早的x86平台开发必须遵循C/C++的ANSI标准,不能使用新的Win64功能,比如NT创建的串口,就必须用传统的Windows Sockets实现,这样才能使以前的代码能够运行在新平台之上。

说了这么多历史,到底想说明什么呢?其实想说的就是,不同的CPU架构,其开发的接口是不同的。比如早期的x86平台只能支持Pascal ABI;而arm平台,如果编译成ARM ABI,那么只能在ARM芯片上跑,如果是WinRT ABI,那么只能在WinRT的虚拟机里跑……而要满足各种接口的统一性,就需要一个通用的接口。而这个接口,就是CppBridge,它解决了不同CPU架构执行同样的C代码的问题。有了这个工具,即使代码写了错误的接口,也可以通过它来恢复执行。

所以题主想问的API应该指的是CppBridge,而不是具体的CPU架构的接口。而且通过CppBridge,也可以访问底层硬件,如USB、网卡、磁盘等等,因此很多驱动也都需要用它来编写。 CppBridge虽然是通用的接口,但并不能处理所有的场景。有些操作系统的功能是用不上的,例如Linux,而且越是低层的API,往往也没有做好支持。另外,CppBridge也不保证能访问到所有硬件的功能。

发表评论
请发表正能量的言论,文明评论!