< 返回版块

yooocen 发表于 2019-12-08 22:32

我有一个疑问,假设我自己有一个rust写的wasm模块,我希望代码中用到另一个wasm模块的一个方法,我可以通过类似于extern "c" 类似的方法声明这个方法,然后在本模块中调用吗?

评论区

写评论
作者 yooocen 2019-12-09 16:24

你这样太浅了,你要想有些模块并不是我开发的,比如说别人有一个go写的代码,转成一个wasm的包,有一些特性挺有用,在前端会引用,js可以用它的胶水代码,我自己有一个rust写的wasm包,我不希望通过js作为中间语言,我希望它的代码能直接在我的rust代码里面打桩,也就是FFI,然后我可以调。是这个意思,不过很感谢你可以尝试回答我的问题 对以下内容的回复:

morningKing 2019-12-09 15:48

倒腾了一下,可以定义一个wasm模块(src/wasm.rs),然后在wasm文件夹下创建wasma模块(/src/wasm/wasma.rs)和wasmb模块(/src/wasm/wasmb.rs),在wasmb模块中使用use super::wasma,这样做是可行的,可以参考(https://doc.rust-lang.org/book/ch07-03-paths-for-referring-to-an-item-in-the-module-tree.html),但是如果是在根目录下同级模块间这样做却不行,暂时没想出来为什么,我也是初学者,如果你知道了,我们可以交流。 对以下内容的回复:

作者 yooocen 2019-12-09 11:25

是的,就是这个意思 对以下内容的回复:

morningKing 2019-12-09 09:45

请问问题中的“另一个wasm模块”是个新的模块吗?比如一个叫wasm A模块,一个叫wasm B模块,两者之间没有层级关系,只是A模块要引用B模块的方法。

1 共 4 条评论, 1 页