WebAssembly笔记(4)-JavaScript和C++的交互
一 JS调用C++函数 从JS中调用C++函数,需要把C++函数声明为导出,有好几种方法,本文采用最原始也是效率最高的方法,就是函数签名加上 EMSCRIPTEN_KEEPALIVE。 1.1 EMSCRIPTEN_KEEPALIVE 作用是告诉C++编译器这个函数会被用到,不要在“tree sha… 阅读更多 »WebAssembly笔记(4)-JavaScript和C++的交互
一 JS调用C++函数 从JS中调用C++函数,需要把C++函数声明为导出,有好几种方法,本文采用最原始也是效率最高的方法,就是函数签名加上 EMSCRIPTEN_KEEPALIVE。 1.1 EMSCRIPTEN_KEEPALIVE 作用是告诉C++编译器这个函数会被用到,不要在“tree sha… 阅读更多 »WebAssembly笔记(4)-JavaScript和C++的交互
本文演示把一个C/C++代码编译成WebAssembly格式文件,并在浏览器上运行。以 MacOS 12.3.1为例,步骤如下: 一 前置条件 Git。Mac系统默认已经安装; CMake。Mac中使用 brew install cmake 安装; 系统编译工具。Mac中安装 XCode 即可; P… 阅读更多 »WebAssembly笔记(3)-编译和运行HelloWorld
随着Web网页的广泛发展,拥有JIT技术加持后,JavaScript的执行效率大幅提升,但由于解释型语言的特点,以及动态类型的天生缺陷,在某些CPU密集计算型的应用场景下,JavaScript的性能仍然力不从心。而且有大量C/C++等编译型语言的软件和库,也有着搬到Web上执行的需求,但如果全部用J… 阅读更多 »WebAssembly笔记(2)-从asm.js到wasm
WebAssembly可以让C/C++、Rust、Java、C#等多种高级语言编写的代码,在Web上以接近原生性能的方式运行,有越来越多的大型应用通过它跑在了网页上,例如:AutoCAD在线版、Figma在线版,还有在微信上支持运行Unity小游戏,底层的关键技术都是基于WebAssembly。 要… 阅读更多 »WebAssembly笔记(1)-JavaScript的执行流程