【发布时间】:2021-05-27 03:36:02
【问题描述】:
我有一个包含以下声明的头文件:
typedef struct {
double *vals;
int len;
} List;
typedef struct {
List *list;
int sample;
} MarkedList;
我正在编译一个包含这些定义的 C 文件和一个接受 const *MarkedList 的函数:
clang --target=wasm32 -nostdlib -Wl,--export-all -Wl,--no-entry src/filename.c -o target/res/filename.wasm
我正在加载该文件:
WebAssembly.instantiateStreaming(fetch('res/mean.wasm'), {})
.then(results => {
console.log(results)
});
然后控制台向我显示了一个带有 instance.exports 的 wasm 模块,其中包含我定义的函数,但 不是 结构。如何从我的 javascript results 对象访问结构?
【问题讨论】:
-
您不能导出类或结构,只能导出实例,即符号。如果您创建
MarkedList的全局实例,您应该能够导出它(即它在内存中的地址) -
@sbc100 哦,谢谢。如何在 JS 中分配或实例化结构?
-
有几种方法。最低级别的方法是致电
Module._malloc。还有更高级别的绑定解决方案,例如 embind:emscripten.org/docs/porting/connecting_cpp_and_javascript/…
标签: javascript c webassembly