のサポート私はNDK 5フルC++ gnustlを使用しようとしています:のAndroid NDK R5およびC++の例外
CPLUSPLUS-SUPPORT.html
状態:
NDKツールチェーンは、しかし、すべて、NDK r5にあるため、C++の例外をサポートしていますC++ ソースは、以前のリリースとの互換性の理由で、 のデフォルトの-fno-exceptionsサポートでコンパイルされます。
有効にするには、 '-fexceptions' C++コンパイラフラグを使用します。これはあなたのAndroid.mk内のすべてのモジュール定義に以下を追加することで を行うことができます。
LOCAL_CPPFLAGS += -fexceptions
もっと単純に、設定はすべてのプロジェクトのNDKに適用され、自動的 う、あなたのApplication.mkに単一の行を追加します。モジュール:
APP_CPPFLAGS += -fexceptions
sources/cxx-stl/gnu-libstdc++/README
状態:
このディレクトリの共同 GNU libstdC++ - v3 C++標準テンプレートライブラリの実装用のヘッダーとあらかじめ作成されたバイナリが含まれています。
これらはビルド/ツールの下のrebuild-all-prebuilt.sh スクリプトによってツールチェーンソースから生成されます。
これを使用するには、Application.mkでAPP_STLを 'gnustl_static'に定義します。 詳細については、docs/CPLUSPLUS-SUPPORT.htmlを参照してください。
この実装は、C++の例外とRTTIを完全にサポートしています。
ただし、例外を使用する試みはすべて失敗します。別のNDKがhttp://www.crystax.net/android/ndk-r4.phpに存在します。そのNDKのhello-jniの例を使用しても動作しません。 gnustl_static
にAPP_STLを設定
APP_STL := gnustl_static
でApplication.xml
を作成した後NDK 5作品とのコンパイルにも自動的に-frtti
と-fexceptions
を可能にします。しかし、それは自分の実験と同じ恐ろしい死を迎えます。
私は私のためにクラッシュされたコードの最小限の例を得るために管理している:
try {
__android_log_write(ANDROID_LOG_DEBUG,"foobar","trhown!");
throw "Wrong object type.";
} catch (char* b) {
__android_log_write(ANDROID_LOG_DEBUG,"foobar","catched!");
}
が、私は何かが足りないか、README
とCPLUSPLUS-SUPPORT.html
単純に間違っ内のステートメントであるアム?
おそらくそれは、今後のNDKリリースで修正される可能性が
...ので、その手助けするのは難しいです。例外、RTTI、およびstatic_gnustlは私のためにNDK-r5で動作します。 – grrussel
クラッシュする例を追加しました。 – plaisthos
引数V = 1を指定してndk_buildコマンドを実行すると、ビルドとリンクのコマンドが表示されます。クラッシュは例外によるものなのですか? – grrussel