Próbuję użyć NDK 5 karta C++ gnustl:Android NDK R5 i wsparcie C++ wyjątek
W CPLUSPLUS-SUPPORT.html
Zjednoczone:
NDK toolchain obsługuje wyjątków C++ od NDK R5, jednak wszystko Źródła C++ są kompilowane domyślnie z opcją -fno-wyjątków, z powodów związanych z kompatybilnością z poprzednimi wersjami w odniesieniu do .
Aby go włączyć, użyj flagi kompilatora C++ "-exception". Można to zrobić przez dodanie następujących do każdej definicji modułu w Twoim Android.mk:
LOCAL_CPPFLAGS += -fexceptions
prościej dodać jedną linię do Application.mk, ustawienie automatyczne zastosowanie do NDK wszystkie Twoje projektu moduły:
APP_CPPFLAGS += -fexceptions
sources/cxx-stl/gnu-libstdc++/README
Zjednoczone:
To co katalog zawiera nagłówki i wstępnie skompilowane pliki binarne dla implementacji standardowej biblioteki szablonów GNU libstdC++ - v3 C++ Standard C++.
Są one generowane ze źródeł toolchain przez skrypt rebuild-all-prebuilt.sh w kompilacji/narzędziach.
Aby z niego skorzystać, zdefiniuj APP_STL na "gnustl_static" w pliku Application.mk. Aby uzyskać więcej informacji, zobacz dokumentację/CPLUSPLUS-SUPPORT.html.
Ta implementacja w pełni obsługuje wyjątki C++ i RTTI.
Jednak wszystkie próby użycia wyjątków kończą się niepowodzeniem. Alternatywny NDK istnieje pod adresem http://www.crystax.net/android/ndk-r4.php. Korzystanie z przykładu hello-jni z tego NDK nie działa. Compliation z NDK 5 utworów po utworzeniu Application.xml
z
APP_STL := gnustl_static
Ustawianie APP_STL do gnustl_static
również automatycznie włącza -frtti
i -fexceptions
. Ale umiera ta sama straszliwa śmierć jak moje własne eksperymenty.
udało mi się uzyskać minimalny przykład kodu, który jest dla mnie upaść:
try {
__android_log_write(ANDROID_LOG_DEBUG,"foobar","trhown!");
throw "Wrong object type.";
} catch (char* b) {
__android_log_write(ANDROID_LOG_DEBUG,"foobar","catched!");
}
Am ja czegoś brakuje lub jest oświadczenie w README
i CPLUSPLUS-SUPPORT.html
po prostu źle?
Nie powiedział, co się awaria jest, więc trudno, aby pomóc; Wyjątki, RTTI i static_gnustl działają dla mnie w NDK-r5. – grrussel
Dodałem przykład, który zawiesza się. – plaisthos
Wywołaj polecenie ndk_build z argumentem V = 1, a zobaczysz polecenia do kompilacji i linkowania. Czy na pewno przyczyną awarii są wyjątki? – grrussel