emscripten window.onload 等效
emscripten window.onload equivalent
我有一个 html 文件,我将 emscripten 生成的代码复制粘贴到它的 <script></script>
区域
浏览器 运行 处理所有 html 文件之前的 emscripten 代码
因此,如果 emscripten 代码使用 <script></script>
区域之后的 html 元素,它将不起作用
here 它说 C main() 函数在页面完全加载后调用,但这是错误的
html 文件完全加载后,如何制作 C 代码 运行?
此 page 是使用 Emscripten 编译为 JavaScript 并将 JavaScript 包含在您自己的页面中的教程式指南。它包括在 HTML 文档上单击按钮之前不 运行 宁 C 程序。
简而言之,通常情况下,与其复制粘贴 Emscripten 生成的代码,不如在单独的请求中加载 Emscripten JavaScript 更容易,例如,在您的主文档中 运行ning JavaScript:
var script = document.createElement('script');
script.src = "my_emscripten_script.js";
document.body.appendChild(script);
在 Emscripten 中你根本不需要有一个 main
函数,那个教程我 link 重命名 main
函数 mainf
,如果你导出通过传递命令行标志
-s EXPORTED_FUNCTIONS='["_mainf"]'
到 emcc
在编译时(注意前导下划线!)然后当你想启动你的 C 程序时你可以从 JavaScript 调用它。 here 描述了如何从 JavaScript 调用导出函数,但对于重命名的 mainf
函数将是一个 JavaScript 调用,如下所示:
Module.ccall('mainf', null, null);
如果你想确保在 Emscripten 运行 时间准备好之前不调用它,Emscripten 使用的 Module
对象可以添加一个 onRuntimeInitialized
方法给它。当 Emscripten 准备就绪时调用此函数,因此您可以使用它来调用 ccall
以启动程序。
说了这么多,令我惊讶的是您的 main
函数在文档准备好之前 运行。请注意,html5.h
中的某些 emscripten 函数(例如请求 canvas 进入全屏的函数)仅在用户启动事件时起作用(出于安全原因),因此它可能是那是你的问题,而不是在页面加载期间的什么时候调用 main
。
我有一个 html 文件,我将 emscripten 生成的代码复制粘贴到它的 <script></script>
区域
浏览器 运行 处理所有 html 文件之前的 emscripten 代码
因此,如果 emscripten 代码使用 <script></script>
区域之后的 html 元素,它将不起作用
here 它说 C main() 函数在页面完全加载后调用,但这是错误的
html 文件完全加载后,如何制作 C 代码 运行?
此 page 是使用 Emscripten 编译为 JavaScript 并将 JavaScript 包含在您自己的页面中的教程式指南。它包括在 HTML 文档上单击按钮之前不 运行 宁 C 程序。
简而言之,通常情况下,与其复制粘贴 Emscripten 生成的代码,不如在单独的请求中加载 Emscripten JavaScript 更容易,例如,在您的主文档中 运行ning JavaScript:
var script = document.createElement('script');
script.src = "my_emscripten_script.js";
document.body.appendChild(script);
在 Emscripten 中你根本不需要有一个 main
函数,那个教程我 link 重命名 main
函数 mainf
,如果你导出通过传递命令行标志
-s EXPORTED_FUNCTIONS='["_mainf"]'
到 emcc
在编译时(注意前导下划线!)然后当你想启动你的 C 程序时你可以从 JavaScript 调用它。 here 描述了如何从 JavaScript 调用导出函数,但对于重命名的 mainf
函数将是一个 JavaScript 调用,如下所示:
Module.ccall('mainf', null, null);
如果你想确保在 Emscripten 运行 时间准备好之前不调用它,Emscripten 使用的 Module
对象可以添加一个 onRuntimeInitialized
方法给它。当 Emscripten 准备就绪时调用此函数,因此您可以使用它来调用 ccall
以启动程序。
说了这么多,令我惊讶的是您的 main
函数在文档准备好之前 运行。请注意,html5.h
中的某些 emscripten 函数(例如请求 canvas 进入全屏的函数)仅在用户启动事件时起作用(出于安全原因),因此它可能是那是你的问题,而不是在页面加载期间的什么时候调用 main
。