编译器安装
如果自己想手动安装,可以参考https://emscripten.org
我使用 docker 来运行,运行命令如下(相当于进入一个已经装好了编译器的 linux 系统)
sudo docker run -it -v /tmp:/tmp trzeci/emscripten bash
准备好测试的源代码
假设文件 test.c
的内容如下
#include <stdio.h>
#include <emscripten/emscripten.h>
int main(int argc, char ** argv){printf("This is main function\n");
}
#ifdef __cplusplus
extern "C" {
#endif
void EMSCRIPTEN_KEEPALIVE show(int argc, char ** argv){printf("This is show function\n");
}
#ifdef __cplusplus
}
#endif
编译
emcc test.c -s WASM=1 -s "EXTRA_EXPORTED_RUNTIME_METHODS=['ccall']" -o test.js
编译会生成 test.js
和test.wasm
这 2 个文件,引用的时候需要放在一起
HTML 引用
<!DOCTYPE html>
<html>
<head>
<title>test</title>
</head>
<body>
<button>run c show function</button>
<script type="text/javascript" src="test.js" async></script>
<script type="text/javascript">
document.querySelector('button').addEventListener('click', function(){Module.ccall('show', null, null, null);
});
</script>
</body>
</html>
注意
main 函数是默认就会被调用的
网页项目需要跑在 HTTP 服务下才可以