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>


function js_receive(a,b,c,d) {

  var bstr = Pointer_stringify(b);
  document.write(a + " " + bstr + " " + c + " " + d);

  return 42;


<script src="calljs.js"></script>


Comments are closed.