emscripten_run_script() 在优化构建中删除
emscripten_run_script() removed in optimised build
在我的 .cpp
文件中有一行:
emscripten_run_script("callOut();console.error('Hello');");
此函数 callOut
只是向控制台写入一条消息,以便我知道它已被调用。
这在使用 -g4
构建时一切正常,但在使用推荐版本 -O2
编译时没有任何作用。我什至在 javascript 输出中找不到文本 "hello"。
它应该像这样工作吗?有什么办法可以在发布版本中获得此调用?
emscripten_run_script 的替代方法是使用 EM_ASM 宏。我从来没有遇到过这些在优化构建中消失的问题。
所以你的例子相当于
EM_ASM({
callOut();
console.error("Hello");
});
问题是我在调用它之前没有等待 emscripten 代码完全初始化。你应该等到 emscripten main()
函数被调用,然后你就知道它已经准备好了。
使用 -O2
时问题变得更糟,因为 emcc 创建了一个单独的内存初始化文件,必须在 emscripten 代码准备就绪之前加载该文件。
在我的 .cpp
文件中有一行:
emscripten_run_script("callOut();console.error('Hello');");
此函数 callOut
只是向控制台写入一条消息,以便我知道它已被调用。
这在使用 -g4
构建时一切正常,但在使用推荐版本 -O2
编译时没有任何作用。我什至在 javascript 输出中找不到文本 "hello"。
它应该像这样工作吗?有什么办法可以在发布版本中获得此调用?
emscripten_run_script 的替代方法是使用 EM_ASM 宏。我从来没有遇到过这些在优化构建中消失的问题。
所以你的例子相当于
EM_ASM({
callOut();
console.error("Hello");
});
问题是我在调用它之前没有等待 emscripten 代码完全初始化。你应该等到 emscripten main()
函数被调用,然后你就知道它已经准备好了。
使用 -O2
时问题变得更糟,因为 emcc 创建了一个单独的内存初始化文件,必须在 emscripten 代码准备就绪之前加载该文件。