我有一些 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
错误。
问题
- 有谁知道如何创建一个唯一的指针
Foo
? - 有谁知道如何绑定唯一指针?
- 有谁知道
smart_ptr_trait
实际上是做什么的?根据它的文档,我认为它可以让我注册唯一指针。情况似乎并非如此。