好的开始等于成功了一半,本篇逐条讲解如何将一个cpp通过WebAssembly编译并运行在网页上。
一、环境准备
前提条件
需要安装CMake,VS,python2.7及以上
拉取emsdk代码
仓库地址:GitHub - emscripten-core/emsdk: Emscripten SDK
将代码克隆到本地
安装并激活Emscripten
进入本地代码目录【emsdk】
依次执行两个命令:
emsdk.bat install latest
emsdk.bat activate latest
在cmd窗口运行如上,有时需要./
设置环境变量
emsdk_evn.bat
要注意的是:每次执行emcc前都要执行改命令,这是因为这个环境变量设置并不是全局的,如果使用emsdk.bat activate latest --global可以将命令更改为系统的环境变量,这样以后就不用再做环境变量的设置,但是他指向了Emscripten内置的Node.js,Python,java,如果系统中还有其他版本就可能产生冲突
二、编译
准备cpp
一个最简单的例子:helloworld.cpp
#include <stdio.h>
int main() {
printf("hello, world!\n");
return 0;
}
emcc命令
生成.js和.wasm
emcc hello.cpp
生成结果为a.out.js,a.out.wasm,其中.wasm为二进制汇编文件,.js为胶水文件,可以使用node a.out.js测试
但是生产文件名过于固定,且测试依赖nodejs,因此推荐以下方式指定文件名并产生对应的html框架直接可在浏览器测试:
emcc helloworld.cpp -s WASM=1 -o helloworld.html
结果生成:
helloworld.html
helloworld.js
helloworld.wasm
直接在本地启动服务:
emrun --no_browser --port 8080 path[helloworld.html]
成功给出提示:
Now listening at http://0.0.0.0:8080/
在浏览器测试:
输入http://localhost:8080/helloworld.html即可: