I'm not sure if your's is the same problem, but I seem to remember that I
had very weird errors with closure in the past where I was using one- or
two-character-variables and function names in my JS code which then
collided with names minified by closure. Error messages for this were all
over the place, but IFIR some of them looked quite similar to yours. Since
then I'm only using long and descriptive variable and function names in my
JS code :)
On Tuesday, 12 November 2019 15:11:45 UTC+1, Sampo Syrjänen wrote:
>
> 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/a844296e-b24a-43af-84fe-bbd7480a2e1e%40googlegroups.com.