- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个非常简单的 WebAssembly 程序对我来说效果很好:
测试.c
int testing(void) {
return 10;
}
int main(void) {
return 0;
}
test.html
<html>
<body>
<script>
var imports = {};
function instantiate(bytes, imports) {
return WebAssembly.compile(bytes).then(m => new WebAssembly.Instance(m, imports));
}
fetch('test.wasm').then(response => response.arrayBuffer())
.then(bytes => instantiate(bytes, imports))
.then(instance => {
console.log(instance.exports._testing());
} );
</script>
</body>
</html>
我正在使用:
emcc test.c something.c -s "EXPORTED_FUNCTIONS=['_testing']" -s WASM=1 -O3 -o test.wasm
但是,如果我尝试这样的事情:
测试.c
#include <stdio.h>
int testing(void) {
printf("Hello!\n");
return 10;
}
int main(void) {
return 0;
}
首先,它会产生以下错误:
TypeError: import object field 'env' is not an Object
我尝试通过向 imports
添加 env
字段来解决这个问题:
var imports = {
env: {
memoryBase: 0,
tableBase: 0,
memory: new WebAssembly.Memory({
initial: 512
}),
table: new WebAssembly.Table({
initial: 0,
element: 'anyfunc'
})
}
};
但这只会给我带来另一个错误:
LinkError: import object field '___syscall146' is not a Function
我也尝试过使用 -s EXPORT_ALL=1
,但这只是稍微改变了错误消息:
LinkError: import object field '___setErrNo' is not a Function
我对 WebAssembly 不太了解,所以我不确定这里发生了什么。到底是什么导致了这个错误?
编辑:
有趣的是,如果我调用 malloc
,我根本不会收到任何错误:
#include <stdlib.h>
int testing(void) {
int* p = malloc(5);
*p = 17;
free(p);
return 7;
}
int main(void) {
return 0;
}
但是如果我从任何分配的内存中返回值:
#include <stdlib.h>
int testing(void) {
int* p = malloc(5);
*p = 17;
free(p);
return *p;
}
int main(void) {
return 0;
}
我再次得到这个:
LinkError: import object field '___setErrNo' is not a Function
从错误消息来看,emcc
似乎没有链接标准库(也许?),但我找不到其他有同样问题的人...
最佳答案
我终于通过让 emcc
直接输出 .js
文件来让它工作:
测试.c
#include <stdio.h>
void testing(void) {
printf("Hello!\n");
}
int main(void) {
return 0;
}
test.html
<html>
<body>
<script src="test.js"></script>
<script>
Module.onRuntimeInitialized = function() {
_testing();
}
</script>
</body>
</html>
emcc test.c -s EXPORTED_FUNCTIONS=['_testing'] -s WASM=1 -O3 -o test.js
我仍然不完全确定之前出了什么问题......但至少现在可以了。
关于javascript - 包含标准库时出现 WebAssembly LinkError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55170692/
这个非常简单的 WebAssembly 程序对我来说效果很好: 测试.c int testing(void) { return 10; } int main(void) { retur
我正在运行 jython 来连接到需要连接的 Bladelogic 管理器。当我尝试去做的时候。它显示以下错误: java.lang.UnsatisfiedLinkError:java.lang.Un
我正在将同事的 Tesseract-OCR 应用程序从 MacOSX 迁移到 Windows 64,并遇到了库路径问题。 当我执行 OCR 过程时,我得到以下信息: Caused by: java.l
我正在构建一个 Go wasm 模块(用 TinyGo 编译),它编译得很好。但是当我尝试在浏览器中运行它时,我得到了上述错误。 最佳答案 使用 workaround post in the bug
当我正在构建我的 Web 组装应用程序时,我遇到了一个神秘错误的问题: LinkError: WebAssembly.instantiate(): Import #1 module="go"funct
我是一名优秀的程序员,十分优秀!