Почему emscripten не скомпилирует мои функции?

Я пытаюсь скомпилировать некоторый код C ++ в двоичный файл wasm с включенными функциями. Однако, хотя я не получаю никаких ошибок компиляции или каких-либо других предупреждений во время компиляции, файлы, сгенерированные emscripten, не включают функции, которые я экспортировал с помощью -s EXPORTED_FUNCTIONS = [‘….’] «

Вот файл с функциями, которые я хочу экспортировать:
https://pastebin.com/B5w1R4BC

Вот команда компиляции, которую я использую:

em++ -s WASM=1 -s ALLOW_MEMORY_GROWTH=1 \
-Igameoflife/include -Os -DNDEBUG \
-s EXPORTED_FUNCTIONS="['_GOL_Instance_new', '_GOL_Instance_destroy', '_GOL_Init', '_GOL_Step', '_GOL_get_values']" \
-o gol.js gameoflife/src/cellmap.cpp bridge.cpp

Который работает без проблем.

Однако, когда я импортирую «gol.js» в javascript, объект Module не имеет доступа ни к одной из функций, которые я пытаюсь включить (я жду, пока модуль инициализируется перед вызовом этих функций).

TypeError: Module._GOL_Instance_new is not a function

Почему я не могу получить доступ к этим функциям через wasm?

0

Решение

Вероятно, они искажены вашим компилятором C ++. Объявите их как extern "C" чтобы избежать этого:

extern "C"GOL_Instance *
GOL_Instance_new() {
...
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]