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

Changing the default namespace 'Module' in emscripten

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

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

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

您可以更改 EXPORT_NAME 的默认设置 Module。您可以在命令行上将此操作作为 emcc:

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

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

window.MyEmscriptenModule == {...}

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

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

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