emscripten-core / emscripten-core/emscripten

LinkError: WebAssembly.instantiate(): Import #310 module="env" function="segfault" error: function import requires a callable

Open
#14,131 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
27.6k
Forks
3.6k
Avg merge
1d 1h
Merged PRs (30d)
105

Description

Hello,

I am trying to port a c++ library to wasm/js. However when I try to do so the file it created however I get segmentation fault and link error. Below is the code that I use to port the library -

```
BUILD = debug
OUTDIR = bin
TMPDIR = tmp
SRCDIR = src

INCLUDES = -I../3rdparty/mylib/include -I../3rdparty/ABC/include -I../3rdparty/mylib/3rdparty -I../3rdparty/mylib/3rdparty/khronos -I../3rdparty/XYZ/include
DEFINES =
LINK_OPTS =
EMOPTS = \
-s RESERVED_FUNCTION_POINTERS=20 \
-s NO_EXIT_RUNTIME=1 \
-s MODULARIZE=1 \
-s EXPORT_NAME="_mylib" \
-s EXPORTED_FUNCTIONS=@$(SRCDIR)/functions.json \
-s ERROR_ON_UNDEFINED_SYMBOLS=0 \
-s ALLOW_MEMORY_GROWTH=1 \
--memory-init-file 0

ifeq ($(BUILD), debug)
LINK_OPTS += -O0 -Wall --llvm-lto 0 -s ASSERTIONS=2 --closure 0 -s DEMANGLE_SUPPORT=1 -s WASM=1
# DEFINES += -DBGFX_CONFIG_DEBUG=1
else ifeq ($(BUILD), release)
LINK_OPTS = -O3 --llvm-lto 1 --closure 0
endif

all: library
@echo $(OUTDIR)/mylib_$(BUILD).js complete

library:
@mkdir -p $(OUTDIR) $(TMPDIR)
$(CXX) $(LINK_OPTS) $(INCLUDES) $(DEFINES) $(EMOPTS) -o $(TMPDIR)/mylib_$(BUILD).raw.js ../3rdparty/mylib/src/amalgamated.cpp
@cat $(SRCDIR)/header.js > $(OUTDIR)/mylib_$(BUILD).js
@cat $(TMPDIR)/mylib_$(BUILD).raw.js >> $(OUTDIR)/mylib_$(BUILD).js
@cat $(SRCDIR)/footer.js >> $(OUTDIR)/mylib_$(BUILD).js

clean:
rm -rf $(OUTDIR) $(TMPDIR)
```
I would be grateful if someone can please assist me with this.
Screen Shot 2021-05-10 at 3 37 41 pm

Thanks,
Vaanee

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.