我想知道是否有人可以帮助我为Emscripten中的C ++类绑定,该类采用std::vector<T>
作为构造函数。我想要以下内容:
EMSCRIPTEN_BINDINGS(my_class) {
emscripten::class_<test_class>("test_class")
.constructor<std::vector<float>>()
.property("x", &test_class::get_x, &test_class::set_x)
;
}
我阅读了this post,并实现了一个代理功能,将由var inputArray = new Float32Array([1,2,3]
创建的JS浮点数组带到std::vector<float>
。
但是,当我将inputArray
用作类构造函数的参数时,会收到以下警告:
5258048 - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch.
我在DISABLE_EXCEPTION_CATCHING=2
步骤中添加了emcc
标志,但是,这不会产生任何不同的输出。
还有其他人想出解决方案吗?
答案 0 :(得分:0)
关键是要确保使用register_vector为std :: vector定义了映射,以便可以将复制函数创建的向量传递回JavaScript,然后再传递回C ++。
如果我正确理解了您的问题,此代码似乎对我有用:
{
this.state.products.map(function(prod) {
return <tr><td>{prod.x}</td><td>{prod.y}</td></tr>;
})
}
此示例代码假设从Float32Array到std :: vector(在JS中表示为VectorFloat代理对象)进行了无效复制,并假设您已使该部分正常工作,并专注于将向量传递给构造函数。 / p>