在 Emscripten 中,处理输出缓冲区通常涉及到 JavaScript 与 C/C++ 代码之间的交互
printf()
或其他标准输出函数将数据写入到标准输出流(stdout)。#include <stdio.h>
int main() {
printf("Hello from C!\n");
return 0;
}
emcc hello.c -o hello.html
这将生成一个包含 WebAssembly 模块、JavaScript 胶水代码和 HTML 文件的输出目录。
stdout
到一个自定义的输出缓冲区。<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Emscripten Output Buffer</title>
</head>
<body>
<pre id="output"></pre>
<script src="hello.js"></script>
<script>
var outputElement = document.getElementById('output');
// 重定向 stdout 到自定义输出缓冲区
Module.stdout = {
write: function(text) {
outputElement.textContent += text;
}
};
// 初始化 WebAssembly 模块
Module.onRuntimeInitialized = function() {
Module._main();
};
</script>
</body>
</html>
在这个示例中,我们首先在 HTML 文件中创建一个 <pre>
元素,用于显示输出。然后,我们在 JavaScript 中创建一个 Module.stdout.write
函数,将输出重定向到 <pre>
元素。最后,我们初始化 WebAssembly 模块并调用 C/C++ 代码中的 main()
函数。
这样,当 C/C++ 代码使用 printf()
向 stdout
写入数据时,数据将被重定向到 JavaScript 中的自定义输出缓冲区,并显示在 HTML 页面上。
领取专属 10元无门槛券
手把手带您无忧上云