2017-10-24 8 views
0

JNICALL関数の外部から例外をスローすると、スローされた例外がスレッドをハングするようです。アンドロイドネイティブコードからC++例外をスローするとスレッドがハングする

つまり、JNICALL関数(Javaネイティブ関数)内で直接例外をスローすると、正しく捕捉される可能性があります。 JNICALL関数が呼び出す関数またはメソッドからスローされた場合は、一度呼び出すだけでスレッドがハングします。

私は混乱しており、この問題を抱えている他の人には言及がありません。

私のプロジェクトでは最新の安定版ndkを使用していますが、APP_STLはC++ _ sharedに設定されており、言語stdはgnuC++ 11に設定されています。

ご協力いただければ幸いです。

+0

C++からJavaに戻る前に、すべてのC++例外をキャッチして処理していますか? –

+0

この現象は予期されています。 Java側がC++でthrowしている例外を、describeを呼び出して処理する必要があります。それ以外の場合、JVMは無限にiircを待機します。 – Brandon

+0

私はenv-> ThrowNew経由でjavaに戻す前に、C++の例外をキャッチしているか、しようとしています。コードフローは単にthrowステートメントで停止し、決して戻りません。 – Tomasu

答えて

0

AddressSanitizerと競合する可能性があります。いったん私はそれを電話機からアンインストールし、コンパイラフラグを無効にすると、今は動作しています。

関連する問題