繁体   English   中英

为什么脚本不能编译我的函数?

[英]Why won't emscripten compile my functions?

我正在尝试将一些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访问这些功能?

它们可能被您的C ++编译器所破坏。 将它们声明为extern "C"以避免这种情况:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM