Estoy tratando de enviar una cadena de C ++ a JS usando emscripten pero no puedo convertirlo adecuadamente en JS.
C++
EMSCRIPTEN_KEEPALIVE const char* accessDetails() { return func().c_str(); }func devuelve std::string.
Obtengo un number de valor de basura. ¿Cómo puedo obtener la cadena en JS?
Gracias por adelantado.
Al llamar a una función WebAssembly sin procesar como esa, solo se admiten los tipos básicos. En este caso, se le devuelve un puntero que es solo un número (el puntero es un número en JS al igual que en C/C++). Puede usar ese puntero para leer bytes de la memoria de WebAssembly y producir una cadena JS a partir de ellos usando, por ejemplo, UTF8ToString(number) , o puede usar uno de los sistemas de vinculación de nivel superior, como embind, para que se encargue de ello. .
Consulte https://emscripten.org/docs/porting/connecting_cpp_and_javascript/Interacting-with-code.html para obtener más información.