WebAssembly LinkError:_sprintf函数导入需要可调用

特里

从Emscripten编译的WASM(包括对sprintf的调用)在JS中用JS创建WebAssembly.Instance会导致以下错误:

未捕获(承诺)LinkError:WebAssembly.Instance():导入#1 module =“ env” function =“ _sprintf ”错误:函数导入需要可调用的...

的sprintf包括由Emscripten作为libc中的一部分?

编码:

#include <stdio.h>

extern "C" {
    int main() {
        char buffer [50];
        int n, a=5, b=3;
        n=sprintf (buffer, "%d plus %d is %d", a, b, a+b);

        return 0;
    }
}

编译命令:

emcc src/test.cpp -O3 -s WASM=1 -s SIDE_MODULE=1 -o out/test.wasm

EMCC编译运行没有错误。

注释掉sprintf行运行,没有错误,按预期返回0。

此错误的原因是什么,使用sprintf时如何避免?

吉利

Emscripten不将sprintf包含在libc中吗?

您正在编译SIDE_MODULE=1,根据定义这些库在系统库中未链接。

您可以提供自己的实现,sprintf也可以停止作为侧模块进行编译,并允许emscripten为您处理。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

WebAssembly LinkError:函数导入需要可调用

LinkError:WebAssembly.instantiate() 函数导入需要一个可调用的

LinkError:WebAssembly.instantiate():导入#1 module =“ go” function =“ runtime.resetMemoryDataView”错误:函数导入需要可调用

从WebAssembly调用XmlHttpRequest

如何将WebAssembly函数导入TypeScript?

获取WebAssembly导出函数的地址?

使用Clang和WebAssembly导入外部符号

Webassembly 增长内存和导入 malloc

需要WebAssembly的“ br_table”指令示例

使用WebAssembly在Rust中尝试Hello World时出现LinkError

WebAssembly 从 C 调用 JavaScript 函数作为函数指针

使用WebAssembly调用Web API方法

无法从ReactJs组件调用WebAssembly Js API

为什么我的WebAssembly函数比JavaScript慢?

WebAssembly导出的函数返回未定义

chrono杀死了我的Rust WebAssembly函数

从JavaScript调用WebAssembly中的C样式函数指针

WebAssembly实例:调用导出函数时的Javascript行为

TypeScript:此表达式不可调用。“ ExportValue”类型的组成部分不可调用。WebAssembly模块

从WebAssembly .wasm模块获取JavaScript导入对象条目

未捕获(承诺)LinkError:WebAssembly实例化:导入#1 module =“ env” function =“ __ memory_base”错误:全局导入必须为数字

为什么WebAssembly中的malloc需要4倍的内存?

用户控制Webassembly访问从C ++到Java脚本的调用

在Go中调用WebAssembly代码时如何使用Go slice?

Blazor WebAssembly 在点击时不进行 HttpClient 调用

主机可以选择传递给每个 webassembly 模块的系统调用

如何从WebAssembly函数返回JavaScript字符串

如何理解WebAssembly函数主体中的“最小索引”?

如何使用WebAssembly构造函数定义Rust结构?