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.