Hello! I have trouble getting addFunction to work with closure compiler 
enabled. There's a minimal project here to reproduce the issue:

// lib.c
typedef int (*callback_t)(int a);

int func(callback_t callback, int a)
{
    return callback(a);
}

// test.js
const lib = require("./lib.js");
setTimeout(() => {
    const callback = (a) => {
        return 40 + a;
    };
    const callbackPtr = lib.addFunction(callback, "ii");
    console.log(lib._func(callbackPtr, 2));
}, 100);

# Makefile
lib.js: lib.c
emcc -s EXPORTED_FUNCTIONS="['_func']" -s 
EXTRA_EXPORTED_RUNTIME_METHODS="['addFunction']" -s 
RESERVED_FUNCTION_POINTERS=1 --closure 1 -o $@ $^

.PHONY: clean
clean:
$(RM) lib.js lib.wasm

test: lib.js
node test.js


With make test I get this:

node test.js
C:\work\closure\lib.js:28
    throw b;
    ^

LinkError: WebAssembly.Instance(): Import #0 module="e" function="f" error: 
function import requires a callable
    at Object.a.addFunction (C:\work\closure\lib.js:629:10)
    at Timeout._onTimeout (C:\work\closure\test.js:6:29)
 [90m    at listOnTimeout (internal/timers.js:531:17) [39m
 [90m    at processTimers (internal/timers.js:475:7) [39m
gmake: *** [Makefile:9: test] Error 7

What am I missing? How should I compile to make addFunction work?

-- 
You received this message because you are subscribed to the Google Groups 
"emscripten-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/emscripten-discuss/78ba033b-9125-480d-ba7c-d2f0c9e9ce5c%40googlegroups.com.

Reply via email to