带有 emscripten docker 图像的未定义导出符号

Posted

技术标签:

【中文标题】带有 emscripten docker 图像的未定义导出符号【英文标题】:Undefined exported symbol with emscripten docker image 【发布时间】:2021-10-02 17:06:06 【问题描述】:

我错过了什么?

[ad@tank prolly]$ cat wam.c
int wam()  return 2; 

[ad@tank prolly]$ /usr/bin/docker run --rm -v $(pwd):/src emscripten/emsdk emcc --no-entry -s EXPORTED_FUNCTIONS=wam wam.c
emcc: error: undefined exported symbol: "wam" [-Wundefined] [-Werror]

我正在执行 EXPORTED_FUNCTIONS 位,因为 javascript 也找不到该符号。浏览器控制台说:

Uncaught (in promise) TypeError: instance.exports.wam is not a function

之后:

  <script type="module">
    async function init() 
      const  instance  = await WebAssembly.instantiateStreaming( fetch("./wam.wasm"));
      instance.exports.wam();
    
    init();
  </script>


【问题讨论】:

【参考方案1】:

已排序。您必须输入-s EXPORTED_FUNCTIONS=_wam(带下划线),否则它不会导出它。希望还有一个--export-all,但它不被称为。然后instance.exports.wam(); 就可以了;

【讨论】:

以上是关于带有 emscripten docker 图像的未定义导出符号的主要内容,如果未能解决你的问题,请参考以下文章

找不到预加载的图像 (emscripten)

带有 SDL 音频的 Emscripten 工作模型

cv::imdecode 图像从 JS 到 C++ (opencv, emscripten)

Emscripten:我如何编译带有像 immintrin.h 这样的内在头文件的 c 文件?

是否可以像现在一样轻松编译 Emscripten,但没有控制台和 emscripten 徽标?

Emscripten 无法编译着色器