Povolení výjimky C ++

hlasů
19

Snažím se, aby APP nativní kód pro Android. Nativní kód je cplusplus. Kdykoliv se snažím, aby se zobrazí následující chybě.

H236Plus.cpp: 135: error: zpracování výjimek postižené, použití -fexceptions umožnit

Jak mohu použít -fexceptions umožnit zpracování výjimek, a pokud mohu použít?

Položena 10/07/2010 v 06:10
zdroj uživatelem
V jiných jazycích...                            


7 odpovědí

hlasů
26

Záleží na tom, co runtime, který používáte. Pokud nejste s použitím systému runtime a budují se ndk-buildmůžete přidat některý z nich do svého Android.mk souboru:

  • LOCAL_CPP_FEATURES + = výjimky (doporučeno)
  • LOCAL_CPPFLAGS + = -fexceptions

Také můžete přidat následující řádek do vašeho Application.mk souboru:

  • APP_CPPFLAGS + = -fexceptions

K dispozici je více informací v docs/CPLUSPLUS-SUPPORT.htmlve složce NDK

Odpovězeno 06/12/2013 v 10:20
zdroj uživatelem

hlasů
5

Budete muset vybudovat s CrystaX je zvykem NDK . Má plnou libstdc ++, RTTI a výjimky podporují. To je obecně nejlepší nástroj pro vývoj Android já vím.

Odpovězeno 10/07/2010 v 08:30
zdroj uživatelem

hlasů
4

-fexception je kompilátor switch. Jak jej použít, závisí na nastavení kompilátoru. Co kompilátor používáte? IDE? stavět nástroj?

Odpovězeno 10/07/2010 v 06:53
zdroj uživatelem

hlasů
3

V kompilátoru vlajek přidat -fexception v Makefile.

Odpovězeno 10/07/2010 v 06:53
zdroj uživatelem

hlasů
2

s nejnovější verzí Android Studio je to, co můj build.gradle vypadá takto:

model {
    android {
        compileSdkVersion 23
        buildToolsVersion "23.0.2"

        buildTypes {
            release {
                minifyEnabled false
                shrinkResources false
                proguardFiles.add(file("proguard-rules.txt"))
                signingConfig = $("android.signingConfigs.release")
            }
        }

        defaultConfig {
            applicationId "my.android.app"
            minSdkVersion.apiLevel 16
            targetSdkVersion.apiLevel 23
            versionCode 29
            versionName "my.latest.version"
        }

        ndk {
            moduleName "jni-utils"
            ldLibs.add("log")
            cppFlags.add("-std=c++11")
            cppFlags.add("-fexceptions")
            stl "gnustl_static"
        }
    }
    android.signingConfigs {
        create("release") {
            storeFile "C:\\Android\\Git\\MyProject\\keystore\\keystoreCommon"
            storePassword "put you password here"
            keyAlias "put your alias here"
            keyPassword "put your password here"
        }
    }
}
Odpovězeno 20/03/2016 v 16:35
zdroj uživatelem

hlasů
1

Jsem vyřešil tento problém tím, že přidá CFLAGS „-fexceptions“ do NDK části build.gradle skriptu, jako je tento:

ndk {
    ...
    cFlags "-fexceptions"
}
Odpovězeno 09/07/2015 v 21:48
zdroj uživatelem

hlasů
0

Viz tento Odpověď @Tundebabzy pokud používáte ndk-buildsestavení systému.

Pro cmake sestavení systému

Přidejte následující do vaší úroveň modulu build.gradlesouboru:

android {
  ...
  defaultConfig {
    ...
    externalNativeBuild {

      // For ndk-build, instead use ndkBuild {}
      cmake {
        // Enables exception-handling support.
        cppFlags "-fexceptions"
      }
    }
  }
}
...

Více informací naleznete na tento odkaz .

Odpovězeno 19/09/2017 v 13:27
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more