NDK開発エラーuse of invalid jobject 0 x 7 fb 147 b 460

11494 ワード

JNIで直接C/C++の文字列を返すと次のエラーが表示されます.
 JNI DETECTED ERROR IN APPLICATION: use of invalid jobject 0x7fb147b460
07-12 11:35:02.133: A/aoc(21402): aliyunos/aoc/vm/jni/java_vm_ext.cc:399]     from java.lang.String com.example.testndkeclipse.JniClient.AddStr(java.lang.String, java.lang.String)
07-12 11:35:02.133: A/aoc(21402): aliyunos/aoc/vm/jni/java_vm_ext.cc:399] "main" prio=5 tid=1 Runnable
07-12 11:35:02.133: A/aoc(21402): aliyunos/aoc/vm/jni/java_vm_ext.cc:399]   | group="main" sCount=0 dsCount=0 obj=0x764a95c0 self=0x7fb247c400
07-12 11:35:02.133: A/aoc(21402): aliyunos/aoc/vm/jni/java_vm_ext.cc:399]   | sysTid=21402 nice=0 cgrp=default sched=0/0 handle=0x7fb62e92c0
07-12 11:35:02.133: A/aoc(21402): aliyunos/aoc/vm/jni/java_vm_ext.cc:399]   | state=R schedstat=( 144816922 6913689 138 ) utm=8 stm=6 core=4 HZ=100
07-12 11:35:02.133: A/aoc(21402): aliyunos/aoc/vm/jni/java_vm_ext.cc:399]   | stack=0x7fea3da000-0x7fea3dc000 stackSize=8MB
07-12 11:35:02.133: A/aoc(21402): aliyunos/aoc/vm/jni/java_vm_ext.cc:399]   | held mutexes= "mutator lock"(shared held)
07-12 11:35:02.133: A/aoc(21402): aliyunos/aoc/vm/jni/java_vm_ext.cc:399]   at com.example.testndkeclipse.JniClient.AddStr(Native method)
07-12 11:35:02.133: A/aoc(21402): aliyunos/aoc/vm/jni/java_vm_ext.cc:399]   at com.example.testndkeclipse.MainActivity.onClick(MainActivity.java:71)
07-12 11:35:02.133: A/aoc(21402): aliyunos/aoc/vm/jni/java_vm_ext.cc:399]   at android.view.View.performClick(View.java:5317)
07-12 11:35:02.133: A/aoc(21402): aliyunos/aoc/vm/jni/java_vm_ext.cc:399]   at android.view.View$PerformClick.run(View.java:21648)
07-12 11:35:02.133: A/aoc(21402): aliyunos/aoc/vm/jni/java_vm_ext.cc:399]   at android.os.Handler.handleCallback(Handler.java:815)
07-12 11:35:02.133: A/aoc(21402): aliyunos/aoc/vm/jni/java_vm_ext.cc:399]   at android.os.Handler.dispatchMessage(Handler.java:104)
07-12 11:35:02.133: A/aoc(21402): aliyunos/aoc/vm/jni/java_vm_ext.cc:399]   at android.os.Looper.loop(Looper.java:207)
07-12 11:35:02.133: A/aoc(21402): aliyunos/aoc/vm/jni/java_vm_ext.cc:399]   at android.app.ActivityThread.main(ActivityThread.java:5915)
07-12 11:35:02.133: A/aoc(21402): aliyunos/aoc/vm/jni/java_vm_ext.cc:399]   at java.lang.reflect.Method.invoke!(Native method)
07-12 11:35:02.133: A/aoc(21402): aliyunos/aoc/vm/jni/java_vm_ext.cc:399]   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:955)
07-12 11:35:02.133: A/aoc(21402): aliyunos/aoc/vm/jni/java_vm_ext.cc:399]   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:816)

C/C++の文字列を中間層jstringに変換して返す必要があります
jstring result = (*env)->NewStringUTF(env,n_str_point);
return result;//        jstring  

NdkDemoコードはGithubにアップロードされました
不正支出があれば、伝言交流を歓迎します.私のGitHub私のCSDN私の簡書開発ノート