使用Emscripten可将C++编译为WebAssembly。1. 安装emsdk并配置环境;2. 编写含extern "C"导出函数的C++代码;3. 用emcc生成wasm和js文件;4. 在HTML中通过Module调用\_add等函数;5. 可选-s EXPORTED_FUNCTIONS限制导出函数。

要将C++代码编译为WebAssembly(Wasm),你需要使用Emscripten工具链。Emscripten是一个完整的LLVM+Clang+Binaryen编译器套件,能将C/C++代码转成可在浏览器中运行的WebAssembly模块。
第一步是安装Emscripten SDK。官方推荐使用emsdk来管理Emscripten版本和环境配置。
git clone https://github.com/emscripten-core/emsdk.git
cd emsdk
./emsdk install latest
./emsdk activate latest
立即学习“C++免费学习笔记(深入)”;
source ./emsdk_env.sh(Linux/macOS)
或运行emsdk_env.bat(Windows)
创建一个简单的C++文件,例如hello.cpp:
#include <iostream>
extern "C" {
int add(int a, int b) {
return a + b;
}
}
int main() {
std::cout << "Hello from C++!" << std::endl;
return 0;
}
注意:extern "C"用于防止C++名称修饰,使函数在JavaScript中更容易调用。
使用emcc命令将C++代码编译为Wasm:
emcc hello.cpp -o hello.html
这会生成多个文件:
如果你想只生成wasm和js文件而不生成HTML:
emcc hello.cpp -o hello.js --no-entry
生成的JS文件会暴露一个Module对象。你可以在HTML中这样调用add函数:
<script src="hello.js"></script>
<script>
Module.onRuntimeInitialized = function() {
const result = Module._add(5, 7);
console.log("Result:", result); // 输出: 12
};
</script>
注意:C++导出的函数前会加下划线_。
如果你只想导出某些函数,可以使用-s EXPORTED_FUNCTIONS参数:
emcc hello.cpp -o hello.js -s EXPORTED_FUNCTIONS='["_add", "_main"]'
还可以启用EXPORT_NAME来自定义模块名:
emcc hello.cpp -o hello.js -s EXPORTED_FUNCTIONS='["_add"]' -s EXPORT_NAME=MyModule
基本上就这些。配置好Emscripten后,编译和调用流程很直接。关键是理解JS与Wasm之间的交互方式,以及如何正确导出和调用函数。以上就是c++怎么使用WebAssembly编译C++代码_c++ WebAssembly编译C++方法的详细内容,更多请关注php中文网其它相关文章!
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号