javascript - 在 emscripten 中更改默认命名空间 'Module'

标签 javascript emscripten

我正在使用 emscripten 为某些库提供 Javascript 绑定(bind)。 Emsripten 将代码打包到命名空间(全局变量)中,称为“模块”。

我想更改命名,以便我可以使用反射(reflect)库用途的名称,并在我为其他库编写绑定(bind)时进一步防止变量名冲突。

我在文档中找不到显示如何执行此操作的任何地方。有谁知道如何更改 emscripten 使用的默认命名空间?

最佳答案

您可以更改 EXPORT_NAME 默认设置为 Module .您可以在命令行上作为 emcc 的选项执行此操作:

emcc -s EXPORT_NAME="'MyEmscriptenModule'" <other options...>

然后该模块将以您指定的任何名称在全局范围内可用:

window.MyEmscriptenModule == {...}

请注意,如果您设置 MODULARIZE 设置为 1,则设置为 EXPORT_NAME将作为全局范围内的函数创建,您必须调用该函数来初始化模块。您可以将设置对象传递给此函数,它将返回模块实例:

var myModuleInstance = window.MyEmscriptenModule({noInitialRun: true});

如果您正在使用一些模块加载器,例如 RequireJS,并且根本不想向全局命名空间添加任何内容,另一种方法是使用 --pre-js <file>--post-js <file>包装最终 Javascript 的选项,如 this answer to a question on Emscripten with module loaders .

关于javascript - 在 emscripten 中更改默认命名空间 'Module',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30152622/

相关文章:

javascript - 如何使用 sigma.js 显示来自 JSON 对象的数据

c++ - 调用了无效的函数指针

javascript - 如何在不复制的情况下将 canvas imageData 传递给 emscripten c++ 程序?

c - 如何在 emscripten 编译库中读取用户指定的文件?

ubuntu - 尝试在 Ubuntu 16.04 上构建 emsdk 时出错

javascript - 如何添加隐藏的自定义属性

javascript - 直接从 Ionic 访问 Hazelcast map

javascript - 如何从 JavaScript 数组中获取 Rails 可接受的值?

javascript 扫雷器放置了不必要的 "1"

javascript - 查看传递给抛出异常的构造函数的字符串