我正在尝试使用emscripten构建一个使用std :: vector和std :: map的程序,并且编译成功.但是,当我在Web浏览器(firefox/chrome)上运行它时,会捕获UnboundTypeError.
[03:21:26.453] UnboundTypeError:由于未绑定类型,无法调用intArrayToVector:Pi
这是使用生成的javascript代码的c ++代码和HTML文件.
TEST.CPP:
#include#include using namespace emscripten; std::vector intArrayToVector(int* input, int num){ std::vector vec; for(int i=0; i ("VectorInt"); function("intArrayToVector", &intArrayToVector, allow_raw_pointer >()); }
的test.html:
javascript代码由以下命令生成:
$ em ++ --bind test.cpp -o test.js
我怎么解决这个问题?感谢您的任何帮助!
Embind不支持指向原始类型的指针. "Pi"表示"指向整数".
如果您总是事先知道数组的大小,可以尝试将数组作为const引用传递.例如
std::vector<int> intArrayToVector(const int (&input)[100])
或者您可以为指针作弊并使用整数参数,reinterpret_cast
并将其视为指针.例如
std::vector<int> intArrayToVector(uintptr_t input, size_t len) { const int* ptr = reinterpret_cast<int*>(input); .... }
或者您可以使用支持指向原始类型的指针的cwrap
API.