Как я могу передать char*
или же std::string
в внешне определенную функцию Javascript, используя emscripten?
В настоящее время, когда я прохожу char*
в мой внешне определенный Javascript вместо строки выводится число (указатели?).
Вот код, который я использую:
mylib.js
mergeInto(LibraryManager.library, {
my_js: function(s) {
Module.print(s);
console.log(s);
document.getElementById('voronoi').innerHTML = s;
},
});
main.cpp
int main(int argc, const char * argv[])
{
char* myString = (char*) malloc(10);
strncpy(myString, "SOMETHING", 10);
my_js(myString);
free(myString);
return 0;
}
Результат выводится на консоль при запуске node ./a.out.js
:
5260128
Я не очень знаком с emscripten, но этот ответ к другому вопросу, кажется, использовать
Pointer_stringify("...")
конвертировать из C строк.
Еще один способ сделать это с помощью embind.
Вы можете отослать мой ответ здесь Больше подробностей.