Please also attach the wasm file, as otherwise when I try to run it it errors on not finding that.
On Thu, Nov 14, 2019 at 12:51 AM Sampo Syrjänen <[email protected]> wrote: > I built with -g1. lib.js is attached as .txt file. The output from the > test is > > 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 > > On Thursday, November 14, 2019 at 12:22:30 AM UTC+2, Alon Zakai wrote: >> >> The testcase works for me on 1.39.2, strange. But perhaps there is >> something nondeterministic in how closure works that ends up with different >> variable names, hitting or not hitting the bug. >> >> Perhaps build it with -g1 (to not minify whitespace) and see what the bad >> value is there? Please attach a build with that if you can. >> >> On Tue, Nov 12, 2019 at 6:16 AM Sampo Syrjänen <[email protected]> >> wrote: >> >>> emsdk version is 1.39.2 >>> >>> On Tuesday, November 12, 2019 at 4:11:45 PM UTC+2, 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/7f93bf40-3bfe-42da-a01c-439f03c0a1b3%40googlegroups.com >>> <https://groups.google.com/d/msgid/emscripten-discuss/7f93bf40-3bfe-42da-a01c-439f03c0a1b3%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> >> -- > 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/88702128-1e83-4223-9fbd-a56324fd30af%40googlegroups.com > <https://groups.google.com/d/msgid/emscripten-discuss/88702128-1e83-4223-9fbd-a56324fd30af%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- 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/CAEX4NpSn7nkSJy72%3DkxOXdro9FnKOKHaAH4XWAg4enyXCL5XqQ%40mail.gmail.com.
