javascript - Emscripten - 编译为 WASM 并在胶水代码中保留原始可调用函数名称

标签 javascript emscripten webassembly

我正在使用 Emscripten v 1.38.43 编译 C 代码。出于优化原因,我剥离了生成的 JS 胶水代码并最小化了代码大小。

这样做的时候我发现 JS 可调用对象是这样映射的:

var asmLibraryArg = {
  "b": ___setErrNo,
  "j": _emscripten_get_heap_size,
  "i": _emscripten_memcpy_big,
  "h": _emscripten_resize_heap,
  "g": myFunctionA,
  "f": myFunctionB,
  "e": myFunctionC,
  "d": myFunctionD,
  "c": abortOnCannotGrowMemory,
  "a": DYNAMICTOP_PTR
};

使我剥离的 JS 更难维护。在旧版本 (1.38.8) 上,它用于输出带有前缀 _ 的函数名称,即 "_myFunctionA": myFunctionA


问:我可以给 emcc 编译器一个标志,强制它在生成的 JS 中保留我的原始函数名吗?

最佳答案

没有一个特定的标志来关闭它,但目前内部标志 -s EMITTING_JS=0 会这样做(如果它认为它不发射 JS,它不会缩小涉及 JS 的东西)。然而,这个标志将来可能会改变——我们正在研究更好的标志来控制这一切。

解决方法是使用较低的优化级别,因为这仅在 -O3-Os 和更高版本中完成。

关于javascript - Emscripten - 编译为 WASM 并在胶水代码中保留原始可调用函数名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57987753/

相关文章:

javascript - 在javascript中确定移动设备上的哪个方向朝下?

javascript - dc.js 重置不会影响 mouseZoomable

html - 如何使用 Wasm 和 Rust 来服务多个 HTML 页面?

c# - 在 CPU 密集型计算中需要 Blazor Wasm 性能改进

javascript - 使用 Emscripten 调用函数指针

c# - 将解决方案发布到文件夹时出错 - 自托管 .NET

javascript - 如何从以前的 typescript(.ts) 文件中删除已编译的 JS 文件?

Javascript 案例(真)抛出意外的标识符

emscripten - WebAssembly 链接错误 : _sprintf function import requires a callable

c++ - CImg 是否与 Emscripten 兼容