作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我尝试将以下代码片段编译为 WebAssembly 二进制文件时,我不断遇到 未解析的符号:llvm_trap
警告,这使得 JS 无法使用 wasm 代码。
emcc test.c -s WASM=1 -s ONLY_MY_CODE=1 -s "EXPORTED_FUNCTIONS=['_test']" -O2 -g -o test.js
test.c(这是一个测试代码,用于重现问题而不执行有意义的工作。)
int test(int *buf) {
int C = 1;
// Assuming WebAssembly.Memory buffer has been preloaed with data.
// *T represents the preloaded data here. And We know *T and *buf
// won't overlap in memory.
int *T = 0;
int index = C ^ buf[5];
int right = T[index];
int left = (unsigned)C >> 8;
// warning disappears if this is commented out. But why?
C = left ^ right;
return C;
}
我没有编写任何llvm_trap
相关代码。有人知道这意味着什么吗?
最佳答案
变量T
必须初始化。如果它表示“映射”到 WebAssembly 线性内存的数组,您可以将其定义为全局数组,如下所示:
int T[1000];
int test(int *buf) {
int C = 1;
int index = C ^ buf[5];
int right = T[index];
int left = (unsigned)C >> 8;
// warning disappears if this is commented out. But why?
C = left ^ right;
return C;
}
编译时不会出现 llvm_trap 警告。
有关如何使用线性内存将数据传递到 WASM 函数的更多详细信息,请参阅以下问题:
关于javascript - 未解析的符号 : llvm_trap from Emscripten,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47171012/
当我尝试将以下代码片段编译为 WebAssembly 二进制文件时,我不断遇到 未解析的符号:llvm_trap 警告,这使得 JS 无法使用 wasm 代码。 emcc test.c -s WASM
我是一名优秀的程序员,十分优秀!