5 c webassembly
我正在尝试将一个简单的 hello world 程序从 C 编译成 Web 程序集。我一直在遵循 MDN 提供的指南(https://developer.mozilla.org/en-US/docs/WebAssembly/C_to_wasm)。通过 Firefox 71 导航到 HTML 页面时,我收到一个TypeError: “NetworkError when attempting to fetch resource.”错误。
这是C代码:
#include <stdio.h>
int
main(int argc, char *argv[]) {
printf("hello, world!");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
以及用于编译的命令:
emcc hello.c -s WASM=1 -o hello.html
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?有没有其他人遇到过这个问题?先感谢您。
我遇到了同样的问题,我尝试了一些解决方案,这些似乎有效:
(1) 查看emrun网络服务器是否可以通过以下方式运行该文件:
emrun --no_browser --port 8080 .
Run Code Online (Sandbox Code Playgroud)
(并在浏览器中打开该站点,即localhost:8080)
(2) 如果没有,请尝试使用此存储git库emsdk:
git clone https://github.com/juj/emsdk.git
cd emsdk
./emsdk install latest
./emsdk activate latest
source ./emsdk_env.sh
Run Code Online (Sandbox Code Playgroud)
然后emrun像方法(1)一样尝试。
CORS 已启用,这会阻止.wasm下载文件。所以运行一个小型服务器来访问html文件是可行的(这包括一个简单的 python 服务器python3 -m http.server!)
开发人员指南中也提到了这一点:
最后,要实际运行程序,我们不能简单地在 Web 浏览器中打开 HTML 文件,因为文件协议方案不支持跨域请求。我们必须实际通过 HTTP 提供输出文件。
您可以从这里参考所有这些信息:https : //webassembly.org/getting-started/developers-guide/