启用异常 C++
我正在尝试为Android制作APP本机代码。 本机代码位于 cplusplus 中。 每当我尝试制作时,都会出现以下错误。
H236Plus.cpp:135: 错误:禁用异常处理,使用 -fexceptions 启用
如何使用 -fexceptions 启用异常处理,在哪里使用它?
I am trying to make APP native code for Android.
The Native code is in cplusplus.
Whenever I try to make, the following error appears.
H236Plus.cpp:135: error: exception handling disabled, use -fexceptions to enable
How do I use -fexceptions to enable exception handling, and where do i use it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
这取决于您使用的运行时。如果您不使用系统运行时并使用 ndk-build 进行构建,则可以将以下任意内容添加到您的 Android.mk 文件中:
另外,您可以将以下行添加到您的 Application.mk 文件中:
NDK 文件夹中的
docs/CPLUSPLUS-SUPPORT.html
中有更多信息It depends on what runtime you are using. If you are not using system runtime and are building with
ndk-build
, you add any of these to your Android.mk file:Also, you can add the following line to your Application.mk file:
There's more information in
docs/CPLUSPLUS-SUPPORT.html
in your NDK folder您需要使用 CrystaX 的自定义 NDK 进行构建。它具有完整的 libstdc++、RTTI 和异常支持。它通常是我所知道的最好的 Android 开发工具。
You need to build with CrystaX's custom NDK. It has full libstdc++, RTTI and exceptions support. It's generally the best tool for Android development I know.
-fexception 是编译器开关。如何使用它取决于您的编译器设置。你使用什么编译器? IDE?构建工具?
-fexception is a compiler switch. How you use it depends on your compiler setup. What compiler are you using? IDE? build tool?
在编译器标志中,在 Makefile 中添加 -fexception。
In the compiler flags add -fexception in your Makefile.
如果您使用的是 ndk-build,请参阅 @Tundebabzy 的此答案构建系统。
对于CMake构建系统
将以下内容添加到您的模块级
build.gradle
文件:了解更多信息请参阅此链接。
Refer this answer by @Tundebabzy if you are using
ndk-build
build system.For CMake build system
add the following to your module-level
build.gradle
file:For more information See this Link.
使用最新版本的 Android Studio,我的 build.gradle 如下所示:
with the latest version of Android Studio this is what my build.gradle looks like:
对于任何已经开始使用 NDK 示例的人来说,只是一个注释。
他们倾向于在 CMakeLists.txt 中设置
-fno-exceptions
,您需要将其删除:您可能需要检查是否需要
-Werror
。Just a note for anyone who has started with one of the NDK examples.
They tend to set
-fno-exceptions
in their CMakeLists.txt, you need to remove it:You might want to check whether you want
-Werror
while you're at it.我通过在
app
或lib
中的 build.gradle 脚本的ndk
部分添加 cFlags "-fexceptions" 解决了这个问题> 文件夹,如下所示:更新:使用较新的 Gradle 插件,它会进入
externalNativeBuild
/cmake
部分,如下所示:I solved this problem by adding cFlags "-fexceptions" into
ndk
section of build.gradle script inapp
orlib
folder, like this:Update: with a newer Gradle plugin, it goes into
externalNativeBuild
/cmake
section as follows: