将C或C++编译为Web程序集时(clang/llvm/binaryen)未定义的函数从“env”导入。从主机环境禁用/重命名导入“env”
例如
extern "C" int afunc();
int main() {
return afunc();
}
编译为
(module
(type $FUNCSIG$i (func (result i32)))
(import "env" "afunc" (func $afunc (result i32)))
(table 0 anyfunc)
(memory $0 1)
(export "memory" (memory $0))
(export "main" (func $main))
(func $main (result i32)
(call $afunc)
)
)
我想线(import "env" "afunc" (func $afunc (result i32)))
意味着它会尝试请求功能afunc
from the host environment。但是,我没有发现主机环境应该命名为env
的文档。
是否可以对这些主机导入进行一些控制? 具体来说,
- 我可以将其重命名为比
env
其他的东西吗? - 是否有可能禁用此行为,以便在函数未定义时可能会出现链接器错误(可能除非它是已知的在主机中可用的函数)?
你用什么命令将你的cpp文件编译成wast? – Tim
[本答案](https://stackoverflow.com/a/45146557/3005167)中描述的命令。 – kazemakase