如何为 C 库编写自定义 Emscripten 垫片? Emscripten 为某些 C 库(例如 SDL 和 OpenAL)捆绑了 shim,但对于其他库,您将不得不自己动手。
shim 我的意思是,要移植的代码所依赖的 C 库的 JavaScript 替代品。
最佳答案
Emscripten 有一些 documentation on the subject ,尽管在撰写本文时它有些不完整。
首先,您需要在 JavaScript 中编写一个 Emscripten “库”,让我们假设相应的 C 库称为示例:
example.js:
// "use strict";
var LibraryExample = {
// Internal functions
$EXAMPLE: {
internal_func: function () {
}
},
example_initialize: function (arg) {
EXAMPLE.internal_func()
}
}
autoAddDeps(LibraryExample, '$EXAMPLE')
mergeInto(LibraryManager.library, LibraryExample)
其次,您必须通过 emcc 的 --js-library 选项将 example.js 文件集成到构建中:
emcc --js-library shims/example.js -o project.js project.bc
现在函数
example_initialize
应该可以用于 Emscripten 生成的 JS 代码,从而替换 C 库依赖项。关于c - 如何为 C 库编写 Emscripten 垫片,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25800382/