问题标签 [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.
javascript - 如何使用最新的 Node.js 在 webassembly 上运行“hello world”?
我在阅读官方文档但没有找到此信息后提出这个问题。
我在 Node.js 上v8.1.3
。如何在 Node.js 上的 JavaScript 中在 wast(WebAssembly 的文本表示)上编译和运行“hello world”?
c++ - Emscripten - cmake - 在 CMakeList 文件中传递 emscripten 选项
如何使用emcmake cmake
和传递 emscripten 命令行选项?
对 c++ / CMake 很陌生,但在谷歌上找不到任何有用的东西。所以也许这个问题只是愚蠢的,在这种情况下我道歉。
我可以使用以下 CMakeList.txt 文件构建我的项目(非 webassembly/普通桌面)
对于网络(程序集)
但是不应该可以使用emcmake cmake
并将其全部保存在(单个)CMakeList 文件中吗?如果我执行emcmake cmake && make
它会很快生成一个文件,但它就像空的一样好(丢失所有文件)。
我猜它可能归结为如何在 CMakeFile 中将参数传递给 emscripten ......
使用 Emscripten (Emcmake) 时Emscripten和问题指定选项的CMake 项目重复
但是设置SET_TARGET_PROPERTIES(Engine PROPERTIES LINK_FLAGS "-s SAFE_HEAP=1")
只给出以下类型的错误:
所以真的..我错了 emcmake 如何工作,如果没有,我如何在 CMakeList 文件中传递 emscripten 参数?
非常感谢!
emscripten - WebAssembly LinkError:_sprintf 函数导入需要可调用
在 JS 中从 Emscripten 编译的 WASM创建WebAssembly.Instance ,其中包括对sprintf的调用,会导致此错误:
未捕获(承诺中) LinkError: WebAssembly.Instance(): Import #1 module="env" function=" _sprintf " 错误:函数导入需要可调用的...
Emscripten不包含sprintf作为 libc 的一部分吗?
编码:
编译命令:
emcc编译运行没有错误。
注释掉sprintf行运行没有错误,按预期返回 0。
这个错误的原因是什么,在使用 sprintf 时如何避免?
emscripten - 在以“MODULARIZE=1”导出的 Emscripten WebAssembly 模块中为外部函数提供 JS 函数?
当使用 emcc 的 MODULARIZE=1 选项时,有没有办法为 extern sendToJs函数提供函数:
emcc 编译命令
测试.cpp
Javascript
javascript - 如果缓冲区大小大于 4KB,则主线程上不允许 WebAssembly.Compile
我正在尝试一个简单的 hello world WebAssembly 示例,但无法理解我在 Chrome 59 中看到的错误:
RangeError:如果缓冲区大小大于 4KB,则主线程上不允许 WebAssembly.Compile。使用 WebAssembly.compile,或在工作线程上编译。
我已按照本教程中的步骤进行操作,并且可以毫无错误地构建所有内容。我正在使用create-react-app
重新接线wasm-loader
。
如果我使用的是计数器模块的本地版本,则会收到我在开头提到的错误。如果我尝试使用预构建的版本(例如这个项目中的那个),它可以正常工作。
当我构建我的模块时,我使用的命令与教程中指定的相同。具有工作模块的项目在其 README 中列出了相同的命令:
知道可能导致错误的原因吗?
javascript - 我可以以某种方式构建 webassembly 代码*没有* emscripten“胶水”吗?
我能否以某种方式创建一个 wasm 文件,该文件将按照 MDN 此处的描述自行工作(通过实例化对象并在其上调用函数)?
我能找到的所有指南(例如 MDN 上的这个)都推荐使用 emscripten;然而,这也将包括约 70kB 的“胶水代码”(具有约 50kB 的可选文件系统仿真),具有附加逻辑(如检测节点/浏览器环境和自动获取等),可能还有其他一些仿真。
如果我不想要那个“胶水代码”并且只想直接创建 WASM(可能来自 C 代码,但也可能是其他东西)怎么办?现在有可能吗?
javascript - 从 JavaScript 调用 WebAssembly 中的 C 样式函数指针
有什么方法可以访问 WebAssembly 模块中的函数指针?
例如,给定以下编译为 WebAssembly 的“模块”:
JavaScript 中的实现是否可以do_callback
调用回调而不必依赖中间 C 函数导出来执行实际的函数调用?
通过中间函数导出,我的意思是我可以添加一个公开可见的内部函数。
然后 JavaScriptset_callback
函数可以通过委托do_callback
函数调用函数指针。
但是,最好不要通过显式间接执行此操作,是否可以使用函数表?
clang - 在 Web 程序集中生成内存和表导入/导出
使用 LLVM/Clang 编译到 WebAssembly 的默认代码生成导出内存并完全忽略表。
当使用 clang ( ) 定位 Web 程序集时,有没有办法发出内存和表导入(和/或导出--target=wasm32-unknown-unknown-wasm
)?
emscripten - emscripten 生成的 invoke_* 函数的用途
当编译成 WebAssembly 时,emscripten 会生成类似invoke_vii
. 他们的目的是什么?
细节:
从 C 编译的 WebAssembly 模块emcc -s WASM=1 -g
期望宿主环境提供各种功能。
我正在开发一个用 C 编写的 WebAssembly 解释器。所以我必须处理提供这些功能,但我对 , 之类的功能感到invoke_vii
目瞪口呆invoke_iiii
。
后缀显然与调用签名有关。例如,vii
表示返回void
并取一些int
s。名称调用表明该函数应该调用某些东西。
除了在 emscripten 生成的 Java Script 代码中的实现之外,我找不到有关这些函数的信息:
dynCall_ii
存在于 WebAssembly 模块中。
似乎所有invoke_*
功能都是指示解释器运行相应的dynCall_*
功能。这种间接的目的是什么?为什么 WebAssembly 代码不dynCall_
直接调用?
c++ - 我可以使用 Webassembly 从磁盘读取文件吗?
我遵循了 Webassembly 入门教程http://webassembly.org/getting-started/developers-guide/
它工作正常并显示“你好,世界!” 浏览器中的消息。
然后我尝试了一个小的 C++ 代码,它打开一个文本文件并在读取文件后进行计算 (10 * 20)。
emcc 编译的文件很好,没有错误。
但是当我通过运行 emrun 通过 HTTP 提供文件时,它无法打开文件。
这是我在 emrun Web 控制台中看到的:
从本地磁盘打开文件有什么限制吗?