导出 C++ 函数到 js 有多种方式:
-
方式一:在编译的时候指定
在编译命令中添加-sEXPORTED_FUNCTIONS
参数,例如:-s EXPORTED_FUNCTIONS=_myFunction,_sayHello1
-
方式二:修改 C++ 函数
在 C++ 代码中需要导出的函数声明前添加EMSCRIPTEN_KEEPALIVE
宏定义#include <emscripten.h> extern "C" int EMSCRIPTEN_KEEPALIVE myFunction(int argc, char ** argv) { printf("我的函数已被调用\n"); return 0; } #ifdef __cplusplus extern "C" { #endif int EMSCRIPTEN_KEEPALIVE sayHello(){ cout << "hello from sayHello!" << endl; return 0; } int sayHello1() { Person p; cout << p.printInfo() << endl; return 0; } #ifdef __cplusplus } #endif
-
方式三:WebIDL Binder
WebIDL Binder
提供了一种简单且轻量级的方法来绑定 c++ 代码,这样编译后的代码就可以像正常的 JavaScript 库一样在 JavaScript 中被使用了。
- 方式四:Embind