Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
禁用/重命名从主机环境导入的内容”;环境"; 编译C或C++到Web汇编()时,未定义函数从“Env”导入。_C++_C_Webassembly - Fatal编程技术网

禁用/重命名从主机环境导入的内容”;环境"; 编译C或C++到Web汇编()时,未定义函数从“Env”导入。

禁用/重命名从主机环境导入的内容”;环境"; 编译C或C++到Web汇编()时,未定义函数从“Env”导入。,c++,c,webassembly,C++,C,Webassembly,比如说 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

比如说

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
。但是,我没有找到关于主机环境应命名为
env
的文档

是否有可能对这些主机导入进行某种控制? 具体来说,

  • 我可以将其重命名为
    env
    以外的名称吗
  • 是否有可能禁用此行为,以便在未定义函数时出现链接器错误(可能是主机中已知可用的函数除外)

目前编译C和C++最简单的方法是用。您提到的组件都是组件,但emscripten是一个完整的工具链,支持构建端到端,包括您需要的所有部分,包括libc/libc++,以及各种其他有用的库。它支持以asm.js和wasm为目标


“env”位是设计用于emscripten的s2wasm的默认行为。Emscripten有标准库(如libc)并将它们链接到您的代码中,它还提供了一些JavaScript代码的功能,JavaScript代码也自动包含在您的模块中。它设置
env
导入并自动实例化模块。

您使用哪些命令将cpp文件编译为wast?中描述的命令。默认行为是否意味着可以更改?没有标志,但您可以更改中
env
的值并重新编译它。