问题标签 [webassembly]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
301 浏览

emscripten - Emscript 仅在重新编译后更改 .wasm 和 .js 文件

我完成了从 C/C++ 编译到 WebAssembly的教程。在“调用 C 中定义的自定义函数”点下,我必须在编译后编辑 .html 输出。

emcc如果我要重新编译 .cpp,如何避免覆盖 .html 输出?

避免覆盖 .html 输出的原因是,我不想在重新编译后编辑 html。因为我认为如果我只在里面编辑,胶水代码不会改变myFunction

0 投票
1 回答
298 浏览

javascript - 在 Nim 中使用带有 Emscripten 的字符串会导致 JavaScript 错误

我正在尝试制作一个在 Emscripten 上运行的简单 Nim 应用程序。我还jsbind用来调用 JavaScript 函数,即console.log.

我有以下文件test.nim

nim.cfg的是:

然后我编译:

然后,当我index.html在浏览器中打开并进行getConsole().log调用时,我收到许多关于UTF8ToString未定义函数的控制台错误,并且程序终止:

在此处输入图像描述

这个函数似乎是一个 Emscripten 前奏函数——我如何确保这个函数和我需要的任何其他函数都包含在我的 JavaScript 输出中?

启用和不启用 WebAssembly 选项都会发生此错误。我正在使用 Nim 0.16.0 和 emcc 1.35.0。

这是两个 Emscripten 输出文件的 JSFiddle。(它们对于堆栈片段来说太大了。)

0 投票
3 回答
1819 浏览

javascript - Webkit WASM 堆栈跟踪调试

当前,当发生 webassembly 运行时错误时,stacktrace 如下所示(我正在尝试将 Csound 作为 webassembly 运行)

(<WASM>[ number1 ]+ number2 ) 是什么意思,尤其是那些数字?

0 投票
1 回答
1079 浏览

javascript - 如何协调主机 JS 和 Wasm 模块之间的内存访问?

目前,Webassembly 仅支持少数几种参数类型,即固定大小的整数和浮点数。这意味着我只能从接受和返回数值的 C/Rust 模块中定义和导出函数。

但是,根据 Mozilla Developer Network,我可以从主机 Javascript 操作模块的内存:

[M] 由 JavaScript 或 WebAssembly 代码创建的内存将可以从 JavaScript 和 WebAssembly 访问和更改。

这听起来很有希望——它表明我可以将内存的一部分指定为字节缓冲区,在其中将更复杂的数据在语言障碍中来回传送。我的模块中的函数可以接受和返回指针(它们本身i32是固定大小的整数),从而在当前约束下工作。

不幸的是,目前尚不清楚我应该如何管理这些内存。如果我需要将数据从 JS 传递到 Wasm 进程,我需要直接写入 Memory 对象,但不知道 Memory 中哪些区域是空闲的。

什么是最安全的策略?我应该导出一对malloc-and-free风格的函数,让 JS 在调用 Wasm 之前请求内存吗?还是有既定的最佳实践?

0 投票
1 回答
8556 浏览

javascript - WebAssembly LinkError: function import requires a callable

I've recently started working with WebAssembly. I hit a problem trying to use log in my C code. I recreated the error in the simplest way I could. The error I get is

The error points to this function, specifically WebAsembly.Instance(module, imports)

(I call this function with loadWebAssembly('/test.wasm'))

My C code is

and gets no errors when compiled with

I haven't been able to fix this error, I hope someone can help me out.

0 投票
1 回答
171 浏览

webassembly - 如何在一个 wasm 函数中调用多个 js 函数?带文本格式

我想在一个 wasm 函数中同时调用“echo”和“log”。

如何使用文本格式进行编码?

0 投票
2 回答
542 浏览

python - emsdk 未安装 Web 程序集

回溯(最后一次调用):文件“C:\emsdk\emsdk”,第 2199 行,在 sys.exit(main()) 文件“C:\emsdk\emsdk”,第 1853 行,在 main if len(sys. argv) <= 1 或 sys.argv[1] == 'help' 或 sys.argv[1] == '--help': TypeError: 'filter' 类型的对象没有 len()

使用以下命令安装 emsdk 时出现错误

emsdk install --build=发布 sdk-incoming-64bit binaryen-master-64bit

0 投票
1 回答
714 浏览

go - 是否可以从 Go 调用 WebAssembly 函数?

我想将 C++ 库编译为 webassembly,然后使用 Go 程序中的 webassembly 库。可能吗?我知道cgo,但不幸的是我在受限环境中运行代码,所以我不能使用cgo。WebAssembly 似乎有一种 JavaScript 接口,所以我认为任何其他语言都应该能够使用相同的接口。

0 投票
1 回答
1537 浏览

webassembly - 如何在 WebAssembly 中实现 setjmp/longjmp?

我刚刚开始研究 WebAssembly MVP,并注意到无法访问堆栈和堆栈指针,或者实际上没有任何结构化异常处理支持(抛出/捕获)等。

鉴于它应该是一个 C 编译目标,它肯定可以实现setjmpand longjmp,但我无法理解如何很好地做到这一点。这个结构在废物中看起来如何?

0 投票
1 回答
428 浏览

webassembly - 在 Webassembly 模块中使用字符串

我试图让这个简单的场景工作,但我不明白如何从内存中获取数据:

在 hello.cpp 中:

在 hello.html 中:

我得到的是 printf 输出正确的值(即用一些有趣的文本修改 dom textDom)但 console.log 输出数字如 6736 和 6672。

我猜那是因为在 Javascript 世界中,这些值像指针一样存储在内存中。如果是这种情况,将这些值作为字符串获取的最佳方法是什么?