如何使用Embind绑定CC++结构体

    技术2022-07-11  88

    https://blog.csdn.net/pkx1993/article/details/82015730

    Embind用于绑定C++函数和类到JavaScript,这样编译代码就能在js中以一种很自然的方式来使用。

    需要在C/C++代码中添加#include <emscripten/bind.h>头文件。使用EMSCRIPTEN_BINDINGS()块来创建函数值类型指针(包括原始和智能指针)枚举常量的绑定

    本节主要介绍如何绑定在C/C++方法中经常作为参数或返回值的结构体;

    首先新建一个example.cpp文件,代码如下:

    #include <emscripten/bind.h> using namespace emscripten; struct Point {     int x;     int y; }; Point getPoint() {     Point point = {0};        point.x = 100;        point.x = 200;        return point; } EMSCRIPTEN_BINDINGS(my_module) {     value_object<Point>("Point")         .field("x", & Point::x)         .field("y", & Point::y)         ;    function("_getPoint", &getPoint); }

    使用embind编译上例,请调用emcc的bind选项,编译指令如下:

    $ emcc --bind -o example.js example.cpp -O3 -s WASM=1

    在JavaScript中调用如下:

    var oPoint = Module._getPoint(); var ix = oPoint.x; var iy = oPoint.y;

    https://segmentfault.com/a/1190000011229465

     

    Processed: 0.011, SQL: 9