makeSetValue,makeGetValue和maybeExport如何在emscripten中工作?

时间:2016-12-11 20:29:01

标签: javascript emscripten

我在许多脚本中看到makeSetValuemakeGetValuemaybeExport,例如preamble.js

但我不知道如何使用它们,或者它们是如何工作的,因为文档中没有提到这些功能。

示例代码:

function writeArrayToMemory(array, buffer) {
  for (var i = 0; i < array.length; i++) {
    {{{ makeSetValue('buffer++', 0, 'array[i]', 'i8') }}};
  }
}

{{{ maybeExport('writeArrayToMemory') }}}

1 个答案:

答案 0 :(得分:2)

{{{ ... }}}是宏,它是在编译时提取的。 使用--js-libraryemcc --js-library lib_foo.js main.c ...选项。

https://github.com/kripken/emscripten/blob/master/src/parseTools.js

lib_foo.js:

mergeInto(LibraryManager.library, {
  writeArrayToMemory: function(array, buffer) {
    for (var i = 0; i < array.length; i++) {
      {{{ makeSetValue('buffer++', 0, 'array[i]', 'i8') }}};
  }
  }
});