导出 C++ 函数到 js 有多种方式:

  1. 方式一:在编译的时候指定
    在编译命令中添加 -sEXPORTED_FUNCTIONS 参数,例如:-s EXPORTED_FUNCTIONS=_myFunction,_sayHello1

  2. 方式二:修改 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
    
  3. 方式三:WebIDL Binder

WebIDL Binder 提供了一种简单且轻量级的方法来绑定 c++ 代码,这样编译后的代码就可以像正常的 JavaScript 库一样在 JavaScript 中被使用了

  1. 方式四:Embind