2016-02-12 38 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"); 
});