JS如何调用C函数接口(文章中的图片不知道为何无法拷贝,不过都是些错误提示,影响不大,所有有部分图片没有上传)
参考案例1:https://blog.csdn.net/pkx1993/article/details/79550180(代码有点小问题,有部分参考价值)
这里涉及到Emscripten和WebAssembly技术,首先我们来了解一下什么是WebAssembly。
WebAssembly是一种小体积,高加载速度的二进制编码格式。从名字就能知道,这是一门底层汇编级的语言。有了WebAssembly,我们的虚拟机层就将会同时加载和运行两种类型的代码——JavaScript和WebAssembly。这两种代码可以通过WebAssembly所提供的js api实现互相调用。事实上,WebAssembly代码的基本单元被称作一个模块,并且这个模块在很多方面都和ES2015的模块是等价的。所以我们可以认为WebAssembly模块是一个“高性能的JS函数”。WebAssembly不是用来取代JavaScript的。它被设计为和JavaScript一起协同工作,从而使得网络开发者能够利用两种语言的优势。WebAssembly设计的目的不是为了手写汇编级别代码,而是为诸如C、C++等低级源语言提供一个高效的编译目标,使得以各种语言编写的代码都可以以接近原生的速度在web中运行。这一点具有重大的意义,这意味着所有由传统语言编写的客户端app都可以在web上高效运行,也就是说在未来客户端全面web化,未来可能不再需要客户端app 。(更多详细参考:https://blog.csdn.net/m549393829/article/details/81839822)
Emscripten是c文件的编译环境,可以将C文件编译成JS可用的wasm文件,wasm文件,顾名思义,web-asm,就相当于web界的汇编。
安装Emscripten有很多坑,分为Linux版本和Windows版本,目前我试安装了Linux版本,在付出了把218.77服务器系统搞崩的代价之后,重装系统继续填坑终于安装好(BUT执行不了???泪奔!!!(╥╯^╰╥)),以下是具体的填坑过程。
不建