2016-01-20 18 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库。