cannot use 'throw' with exceptions disabled(轉)


在為 DragonBonesCPP/refactoring 的 cocos2d-x-3.2 demo 增加 Android 編譯時,NDK 報了一個編譯錯誤:

error: cannot use ‘throw’ with exceptions disabled
throw std::invalid_argument(“Invalid data.”);

這是由於 DragonBonesCPP 庫使用了 C++ 標准異常,而 Android NDK 編譯器默認不支持 C++ 異常控制導致。

但是,從Android NDK r5 版本開始,NDK 就開始支持 C++ 異常控制了,我的版本是 r9d ,為什么還會出現這個錯誤呢?

原來,NDK 編譯器的 C++ 異常控制特性支持默認是關閉的。要打開它,可以這樣做:

編輯 Android.mk 文件,加入下面的代碼:

LOCAL_CPP_FEATURES += exceptions

或者:

LOCAL_CPPFLAGS += -fexceptions

這樣可以對當前項目開啟 C++ 異常控制編譯支持。

如果想偷懶,也可以編輯 Application.mk 文件,加入下面的代碼:

APP_CPPFLAGS += -fexceptions

這樣,所有模塊的 C++ 異常控制編譯支持都會被打開。

上面的兩個 mk 文件位於 proj.android/jni 文件夾中。

 

轉自:https://blog.zengrong.net/post/2168.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM