为什么 emscripten 不编译我的函数?
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() {
...
相关文章:
- 为什么我的删除节点函数实际上没有删除节点?
- 为什么在我的函数类型后使用引用运算符 (&) 允许我修改它返回的值?
- 模板,函数使用错误的构造函数来复制我的对象
- 为什么我的递归函数按降序打印,然后按升序打印?
- 为什么我的模板化函数需要从一个迭代器转换到另一个迭代器?
- 在哪里放置我的函数?进入我的母语 Gui 还是进入我的演示者?
- 为什么我的数组双精度函数不起作用?
- 移动赋值运算符;尝试引用已删除的函数.我该如何解决这个问题?
- 为什么我的双向链表删除函数会删除多个节点?
- 为什么在我的 main 函数中声明整数后我的整数数组中会出现错误?
- 如何返回实际值(在我的例子中是无符号字符数组)而不是来自 C++ 函数的指针?
- 为什么我的运算符 + 重载尽管是通过引用传递的,但仍调用我的复制构造函数?
- 为什么在尝试测量函数返回所需的时间时,我的运行时编号是错误的?
- 查找定义我的 C/C++ 函数/宏的文件比'grep'更简单的方法
- 为什么我的 while 函数没有终止?
- 为什么我的 constexpr 对象在我的函数中不是 constexpr?
- 我关于函数"Assert"的C++代码有问题
- 如何检测除整数以外的任何内容是否传递给我的类构造函数?
- 链表堆栈类的复制构造函数:我的正在向后复制
- 为什么在这种情况下没有调用复制构造函数-我的推理正确吗?