2016-02-12 100 views
0

删除在我.cpp文件我有一个线:emscripten_run_script()以优化的建立

emscripten_run_script("callOut();console.error('Hello');"); 

此功能callOut只是写一条消息到控制台,让我知道它被调用。

-g4一起构建时,这一切都可以正常工作,但在编译时推荐使用-O2。我甚至无法在javascript输出中找到文本“hello”。

它应该像这样工作吗?有什么方法可以在发布版本中获得此调用?

回答

0

的问题是,我没有等待emscripten代码来调用它之前完全初始化。你应该等到emscriten main()函数被调用,然后你就知道它已经准备好了。

当使用-O2时,问题变得更严重,因为emcc创建了一个单独的内存初始化文件,必须在emscripten代码准备好之前加载它。

0

emscripten_run_script的替代方法是使用EM_ASM宏。我从来没有遇到过这些在优化版本中消失的问题。

所以,你的例子是相当于

EM_ASM({ 
    callOut(); 
    console.error("Hello"); 
});