Christian Benincasa Christian Benincasa - 3 months ago 24
C++ Question

Is it possible to print a string from C++ with Javascript using emscripten?

How can I pass a

char*
or
std::string
into an externally defined Javascript function using emscripten?

Currently, when I pass a
char*
into my externally defined Javascript, a number is printed instead of the string (pointers?).

Here is the code I am using:

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;
}


Result printed to the console when running
node ./a.out.js
:

5260128

Answer

I'm not very familiar with emscripten, but this answer to another question seems to use Pointer_stringify("...") to convert from C strings.

Comments