2016-01-20 19 views
-2

我是Android NDK的初學者,對C++的瞭解不多。我用C++編寫了一些邏輯,然後將它們構建到.so文件,然後將它與JNI一起用於我的Android項目,但有時它會在.so文件中引發崩潰。如何在Android NDK C++代碼中使用try-catch語法?

我想快速解決這個問題,我想知道如果我可以使用try-catch語法到我的C++代碼? (我試過了,但它總是報告編譯錯誤。)如果是,我該怎麼做?

C++代碼:

JNIEXPORT void JNICALL Java_xxoo_com_xxoo_model_ARDrawModel_draw(JNIEnv * env, jobject obj) { 
    try { 
     if(controller) 
     { 
      controller->Update(/*float dt*/); 
      controller->DrawGLScene(); 
     } 
    } catch (int a) { 
     LOGD("drawModel---exception"); 

    } 
} 

編譯錯誤: 錯誤:異常處理禁用,使用-fexceptions使

+1

郵政編碼和錯誤。 – Biffen

回答

1

是。你可以在C++ NDK代碼中使用try catch,但它不會捕獲所有本地崩潰。

而且正如您的錯誤所述,您需要在編譯NDK代碼時明確啓用異常功能。爲此,請添加

APP_CPPFLAGS += -fexceptions 

到Application.mk文件。

如果你想趕上所有可能的NDK崩潰檢查https://github.com/xroche/coffeecatch庫。