Я пытаюсь создать с помощью emscripten программу, которая использует std::vector и std::map, и компиляция проходит успешно. Однако, когда я запустил его в веб-браузере (firefox/chrome), была обнаружена ошибка UnboundTypeError.
[03:21:26.453] UnboundTypeError: невозможно вызвать intArrayToVector из-за несвязанных типов: Pi
Вот код С++ и файл HTML, в котором используется сгенерированный код javascript.
test.cpp:
#include <vector>
#include <emscripten/bind.h>
using namespace emscripten;
std::vector<int> intArrayToVector(int* input, int num){
std::vector<int> vec;
for(int i=0; i<num; i++){
int val = *(input+i);
vec.push_back(val);
}
return vec;
}
EMSCRIPTEN_BINDINGS(test){
register_vector<int>("VectorInt");
function("intArrayToVector", &intArrayToVector, allow_raw_pointer<arg<0>>());
}
тест.html:
<html>
<body>
<script src="test.js"></script>
<script>
var num = 6;
var buf = Module._malloc(100);
var arr = new Int8Array(num);
for(var i=0; i<num; i++){
arr[i] = i+2;
}
Module.HEAP8.set(arr, buf);
var v = Module.intArrayToVector(buf, num);
for(var i=0; i<num; i++){
console.log(v.get(i));
}
Module._free(buf);
</script>
</body>
</html>
Код javascript был сгенерирован командой ниже:
$ em++ --bind test.cpp -o test.js
Как я могу решить эту проблему? Спасибо за любую помощь!
short int
не менее 16 бит... - person Anto Jurković   schedule 04.12.2013