导致该问题的原因是NDK编译C++文件时,对异常处理是不予支持的,默认是:-fno-exceptions。这大概与早期的NDK工具仅是C++的最小化运行库有关。在NDK r5之后开始支持C++的异常控制处理了。
解决问题的办法有两种:
1)整个应用层面:即对所有编译模块都起作用,在Application.mk中添加如下内容:
APP_CPPFLAGS := -fexceptions
2)模块层面:即仅对所编译的目标模块起作用,在模块的Android.mk文件中添加如下内容:
LOCAL_CPPFLAGS := -fexceptions