首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将libsoxr构建到Webassembly会导致函数签名不匹配错误

将libsoxr构建到Webassembly会导致函数签名不匹配错误
EN

Stack Overflow用户
提问于 2020-07-20 00:44:57
回答 1查看 311关注 0票数 0

我正在尝试使用emscripten将libsoxr构建为WebAssembly。在调用soxr_create函数时,我尝试的所有操作都会导致RuntimeError: function signature mismatch错误。我使用的是emscripten的latest标签。我也尝试了所提供的示例,并且行为是相同的。我试过使用NodeJS和Chromium。

下面是重现的方法:

代码语言:javascript
复制
git clone https://git.code.sf.net/p/soxr/code
cd soxr
emcmake cmake -DBUILD_EXAMPLES=ON .
emmake make
node examples/2-stream.js

堆栈跟踪为:

代码语言:javascript
复制
exception thrown: RuntimeError: function signature mismatch,RuntimeError: function signature mismatch
    at wasm-function[50]:0xf72e
    at wasm-function[49]:0xe90d
    at wasm-function[60]:0x1057f
    at wasm-function[14]:0xcac
    at wasm-function[13]:0xb53
    at wasm-function[11]:0x699
...

当仅使用调用soxr_createmain函数构建文件并使用-g --profiling构建文件时,下面是我获得的堆栈跟踪:

代码语言:javascript
复制
exception thrown: RuntimeError: function signature mismatch,RuntimeError: function signature mismatch
    at dft_stage_init (wasm-function[68]:0x1b8e2)
    at _soxr_init (wasm-function[66]:0x190be)
    at rate_create (wasm-function[88]:0x1f8fa)
    at initialise (wasm-function[124]:0x43c90)
    at soxr_set_io_ratio (wasm-function[122]:0x4373f)
    at soxr_create (wasm-function[119]:0x43213)
    at __original_main (wasm-function[135]:0x45646)
    at main (wasm-function[136]:0x45684)
    at /home/geekuillaume/code/wasm-audio-resampler/soxr_wasm.js:1635:22
    at callMain (/home/geekuillaume/code/wasm-audio-resampler/soxr_wasm.js:2377:15)

我试过使用emscripten消毒剂,但它没有任何作用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-20 20:37:41

找到了问题所在。Soxr库错误地转换了函数指针。指向的函数不需要任何参数,但被强制转换为接收一个int作为参数的函数。我写了一个补丁来修复这个问题,一切都运行得很好!在Emscripten documentation中有更多关于这方面的信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62983078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档