emscripten-core / emscripten-core/emscripten
LinkError: WebAssembly.instantiate(): Import #310 module="env" function="segfault" error: function import requires a callable
- 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.

Thanks,
Vaanee
Contributor guide
Assessment
This issue has not been assessed yet.