gpt4 book ai didi

emscripten - Emscripten 中与 C++ 类的交互

转载 作者:行者123 更新时间:2023-12-03 21:47:10 25 4
gpt4 key购买 nike

Emscripten 教程很好地解释了如何与 C 函数交互:https://github.com/kripken/emscripten/wiki/Interacting-with-code

但是你如何与 C++ 类交互:

  • 调用构造函数创建对象
  • 删除 obj
  • 防止类及其方法的死代码消除
  • 最佳答案

    检查这个:http://kripken.github.io/emscripten-site/docs/porting/connecting_cpp_and_javascript/embind.html

    例子 :

    C++ 代码:

    #include <emscripten/bind.h>

    using namespace emscripten;

    class MyClass {
    public:
    MyClass(int x, std::string y)
    : x(x)
    , y(y)
    {}

    void incrementX() {
    ++x;
    }

    int getX() const { return x; }
    void setX(int x_) { x = x_; }

    static std::string getStringFromInstance(const MyClass& instance) {
    return instance.y;
    }

    private:
    int x;
    std::string y;
    };

    EMSCRIPTEN_BINDINGS(my_class_example) {
    class_<MyClass>("MyClass")
    .constructor<int, std::string>()
    .function("incrementX", &MyClass::incrementX)
    .property("x", &MyClass::getX, &MyClass::setX)
    .class_function("getStringFromInstance", &MyClass::getStringFromInstance)
    ;
    }

    JS代码:
    var instance = new Module.MyClass(10, "hello");
    instance.incrementX();
    instance.x; // 12
    instance.x = 20; // 20
    Module.MyClass.getStringFromInstance(instance); // "hello"
    instance.delete();

    关于emscripten - Emscripten 中与 C++ 类的交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15865923/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com