0

我有一些 C++ 代码需要一个std::unique_ptr. 我需要从 TypeScript 调用此代码。

class Foo {

}

class Bar {
    void qux(std::unique_ptr<Foo> &&foo);
}

Emscripten 内置了对 的支持std::shared_ptr,但我不知道如何创建一个std::unique_ptr对象,在这种情况下是Foo. 这是Foo.

EMSCRIPTEN_BINDINGS(Foo) {
    smart_ptr_trait<std::unique_ptr<Foo>>();

    class_<Foo>("Foo")
        .smart_ptr_constructor("Foo", &std::make_shared<Foo>);
}

这是我在 TypeScript 中所做的:

const wasm = // Load WebAssembly module

const foo = wasm.Foo() // I know that this is technically a `std::shared_ptr`, but it's the only smart pointer I know how to make.

const bar = wasm.Bar()
bar.qux(foo)

这会导致UnboundTypeError: Cannot call Bar.qux due to unbound types: NSt3__210unique_ptrIN74FooENS_14default_deleteIS2_EEEE错误。

问题

  1. 有谁知道如何创建一个唯一的指针Foo
  2. 有谁知道如何绑定唯一指针?
  3. 有谁知道smart_ptr_trait实际上是做什么的?根据它的文档,我认为它可以让我注册唯一指针。情况似乎并非如此。
4

0 回答 0