Calling JS from C using EM_ASM in Emscripten
A very simple for calling JS from C and returning a value. Create the following C program, in the file calljs.c, it makes a single call to js_receive which will be our Javascript function:
#include <stdio.h>
#include <emscripten.h>
int main() {
int ret = EM_ASM_INT({
return js_receive($0,$1,$2,$3);
}, 1,"two",3,4);
printf("returned: %d\n",ret);
}
compile it with: <pre>emcc calljs.c -o calljs.js</pre>
It will then call the JS code which can access the variables and string. Here's an example complete html file:
[sourcecode language="html"]
<!DOCTYPE html>
<html>
<body>
<script>
function js_receive(a,b,c,d) {
var bstr = Pointer_stringify(b);
document.write(a + " " + bstr + " " + c + " " + d);
return 42;
}
</script>
<script src="calljs.js"></script>
</body>
</html>