java jni 的问题

u010140887 2013-09-12 10:38:40
这个是java里的接口:
public native int ReadSms(int sId, String sNo, String sCon, String sTime);
JNI里的实现:
JNIEXPORT jint JNICALL Java_util_MessageOperation_ReadSms
(JNIEnv *env, jobject obj, jint sId, jstring sNo, jstring sCon, jstring sTime){


return ReadSms( sId, jstringTostring(env,sNo),jstringTostring(env,sCon),jstringTostring(env,sTime));
//return 0;
};
这个是jstringTostring方法:
char* jstringTostring(JNIEnv* env, jstring jstr)
{
char* rtn = NULL;
jclass clsstring = env->FindClass("java/lang/String");
jstring strencode = env->NewStringUTF("utf-8");
jmethodID mid = env->GetMethodID(clsstring, "getBytes", "(Ljava/lang/String;)[B");
jbyteArray barr = (jbyteArray)env->CallObjectMethod(jstr, mid, strencode);
jsize alen = env->GetArrayLength(barr);
jbyte* ba = env->GetByteArrayElements(barr, JNI_FALSE);
if (alen > 0)
{
rtn = (char*)malloc(alen + 1);
memcpy(rtn, ba, alen);
rtn[alen] = 0;
}
env->ReleaseByteArrayElements(barr, ba, 0);
return rtn;
}
然后return ReadSms( sId, jstringTostring(env,sNo),jstringTostring(env,sCon),jstringTostring(env,sTime));
这一句 的这个readSms这个方法是别人给的dll里的接口就是这个:
extern "C" _declspec(dllexport) __stdcall int ReadSms(int sId, char * sNo, char * sCon, char * sTime);

最后问题就出在在java里面调ReadSms 方法的时候就会出问题...求高手帮我解决一下,我是小白,不太懂.....
...全文
80 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
u010140887 2013-09-12
  • 打赏
  • 举报
回复
竟然没有人
  • 打赏
  • 举报
回复
估计没多少人会这,,,
u010140887 2013-09-12
  • 打赏
  • 举报
回复
来人啊,救命..
u010140887 2013-09-12
  • 打赏
  • 举报
回复
# # A fatal error has been detected by the Java Runtime Environment: # # EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x6d973c4a, pid=15840, tid=15888 # # JRE version: 6.0_45-b06 # Java VM: Java HotSpot(TM) Client VM (20.45-b01 mixed mode, sharing windows-x86 ) # Problematic frame: # V [jvm.dll+0x93c4a] # # If you would like to submit a bug report, please visit: # http://java.sun.com/webapps/bugreport/crash.jsp # --------------- T H R E A D --------------- Current thread (0x00856800): JavaThread "main" [_thread_in_vm, id=15888, stack(0x008f0000,0x00940000)] siginfo: ExceptionCode=0xc0000005, reading address 0x00000000 Registers: EAX=0x00000000, EBX=0x00856800, ECX=0x00000006, EDX=0x00856928 ESP=0x0093fbb8, EBP=0x0093fbd4, ESI=0x0093fbe8, EDI=0x0093fc38 EIP=0x6d973c4a, EFLAGS=0x00010246 Top of Stack: (sp=0x0093fbb8) 0x0093fbb8: 0093fc38 0093fbe8 32a4e300 00856800 0x0093fbc8: 00000000 00000000 00000000 0093fc38 0x0093fbd8: 100010f6 00856928 00000000 00000000 0x0093fbe8: 0093fc98 32a4e300 32a4e300 cccccccc 0x0093fbf8: cccccccc cccccccc cccccccc cccccccc 0x0093fc08: cccccccc cccccccc cccccccc cccccccc 0x0093fc18: cccccccc cccccccc cccccccc cccccccc 0x0093fc28: cccccccc cccccccc cccccccc 00856928 Instructions: (pc=0x6d973c4a) 0x6d973c2a: ff 8b 43 04 83 c4 08 85 c0 89 5d f0 c7 45 f4 00 0x6d973c3a: 00 00 00 74 08 8d 4d f0 e8 d9 eb 09 00 8b 45 0c 0x6d973c4a: 8b 38 57 e8 fe 9a f8 ff 8d 70 01 56 e8 f5 d3 06 0x6d973c5a: 00 83 c4 08 85 c0 89 45 08 75 19 68 ec 84 b0 6d Register to memory mapping: EAX=0x00000000 is an unknown value EBX=0x00856800 is a thread ECX=0x00000006 is an unknown value EDX=0x00856928 is an unknown value ESP=0x0093fbb8 is pointing into the stack for thread: 0x00856800 EBP=0x0093fbd4 is pointing into the stack for thread: 0x00856800 ESI=0x0093fbe8 is pointing into the stack for thread: 0x00856800 EDI=0x0093fc38 is pointing into the stack for thread: 0x00856800 Stack: [0x008f0000,0x00940000], sp=0x0093fbb8, free space=318k Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) V [jvm.dll+0x93c4a] C [Utils.dll+0x10f6] C [Utils.dll+0x1216] j com.youto.Utils.OpenModem(IILjava/lang/String;)I+0 j com.youto.Utils.main([Ljava/lang/String;)V+51 v ~StubRoutines::call_stub V [jvm.dll+0xfb88b] V [jvm.dll+0x18d551] V [jvm.dll+0xfb90d] V [jvm.dll+0x960f6] V [jvm.dll+0x9df33] C [javaw.exe+0x2155] C [javaw.exe+0x8624] C [kernel32.dll+0xb729] GetModuleFileNameA+0x1ba Java frames: (J=compiled Java code, j=interpreted, Vv=VM code) j com.youto.Utils.OpenModem(IILjava/lang/String;)I+0 j com.youto.Utils.main([Ljava/lang/String;)V+51 v ~StubRoutines::call_stub --------------- P R O C E S S --------------- Java Threads: ( => current thread ) 0x02bb9000 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=15952, stack(0x02e30000,0x02e80000)] 0x02bb6000 JavaThread "C1 CompilerThread0" daemon [_thread_blocked, id=15948, stack(0x02de0000,0x02e30000)] 0x02bbc400 JavaThread "Attach Listener" daemon [_thread_blocked, id=15944, stack(0x02d90000,0x02de0000)] 0x02bb1c00 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=15940, stack(0x02d40000,0x02d90000)] 0x02bab800 JavaThread "Finalizer" daemon [_thread_blocked, id=15916, stack(0x02cf0000,0x02d40000)] 0x02ba6c00 JavaThread "Reference Handler" daemon [_thread_blocked, id=15912, stack(0x02ca0000,0x02cf0000)] =>0x00856800 JavaThread "main" [_thread_in_vm, id=15888, stack(0x008f0000,0x00940000)] Other Threads: 0x02b6a400 VMThread [stack: 0x02c50000,0x02ca0000] [id=15908] 0x02bd2400 WatcherThread [stack: 0x02e80000,0x02ed0000] [id=15960] VM state:not at safepoint (normal execution) VM Mutex/Monitor currently owned by a thread: None Heap def new generation total 4928K, used 281K [0x229f0000, 0x22f40000, 0x27f40000) eden space 4416K, 6% used [0x229f0000, 0x22a36440, 0x22e40000) from space 512K, 0% used [0x22e40000, 0x22e40000, 0x22ec0000) to space 512K, 0% used [0x22ec0000, 0x22ec0000, 0x22f40000) tenured generation total 10944K, used 0K [0x27f40000, 0x289f0000, 0x329f0000) the space 10944K, 0% used [0x27f40000, 0x27f40000, 0x27f40200, 0x289f0000) compacting perm gen total 12288K, used 378K [0x329f0000, 0x335f0000, 0x369f0000) the space 12288K, 3% used [0x329f0000, 0x32a4e888, 0x32a4ea00, 0x335f0000) ro space 10240K, 55% used [0x369f0000, 0x36f73dd8, 0x36f73e00, 0x373f0000) rw space 12288K, 55% used [0x373f0000, 0x37a96cd0, 0x37a96e00, 0x37ff0000) Code Cache [0x00970000, 0x009e0000, 0x02970000) total_blobs=127 nmethods=3 adapters=61 free_code_cache=33106880 largest_free_block=0 Dynamic libraries: 0x00400000 - 0x00425000 D:\Java\jdk1.6.0_45\bin\javaw.exe 0x7c920000 - 0x7c9b6000 C:\WINDOWS\system32\ntdll.dll 0x7c800000 - 0x7c91e000 C:\WINDOWS\system32\kernel32.dll 0x77da0000 - 0x77e49000 C:\WINDOWS\system32\ADVAPI32.dll 0x77e50000 - 0x77ee3000 C:\WINDOWS\system32\RPCRT4.dll 0x77fc0000 - 0x77fd1000 C:\WINDOWS\system32\Secur32.dll 0x77d10000 - 0x77da0000 C:\WINDOWS\system32\USER32.dll 0x77ef0000 - 0x77f39000 C:\WINDOWS\system32\GDI32.dll 0x76300000 - 0x7631d000 C:\WINDOWS\system32\IMM32.DLL 0x62c20000 - 0x62c29000 C:\WINDOWS\system32\LPK.DLL 0x73fa0000 - 0x7400b000 C:\WINDOWS\system32\USP10.dll 0x7c340000 - 0x7c396000 D:\Java\jdk1.6.0_45\jre\bin\msvcr71.dll 0x6d8e0000 - 0x6db90000 D:\Java\jdk1.6.0_45\jre\bin\client\jvm.dll 0x76b10000 - 0x76b3a000 C:\WINDOWS\system32\WINMM.dll 0x6d890000 - 0x6d89c000 D:\Java\jdk1.6.0_45\jre\bin\verify.dll 0x6d3e0000 - 0x6d3ff000 D:\Java\jdk1.6.0_45\jre\bin\java.dll 0x6d8d0000 - 0x6d8df000 D:\Java\jdk1.6.0_45\jre\bin\zip.dll 0x10000000 - 0x10039000 F:\note\SMSTestVC\Utils\Debug\Utils.dll 0x02ed0000 - 0x02ede000 D:\Java\jdk1.6.0_45\bin\xxtSmsDll.dll 0x76bc0000 - 0x76bcb000 C:\WINDOWS\system32\PSAPI.DLL VM Arguments: jvm_args: -Dfile.encoding=GBK java_command: com.youto.Utils Launcher Type: SUN_STANDARD Environment Variables: JAVA_HOME=C:\Program Files\Java\jdk1.6.0_45 CLASSPATH=.;C:\Program Files\Java\jdk1.6.0_45\lib;C:\Program Files\Java\jdk1.6.0_45\lib\tools.jar PATH=C:/Program Files/Genuitec/Common/binary/com.sun.java.jdk.win32.x86_1.6.0.013/jre/bin/client;C:/Program Files/Genuitec/Common/binary/com.sun.java.jdk.win32.x86_1.6.0.013/jre/bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Java\jdk1.6.0_45\bin;C:\Program Files\Java\jdk1.6.0_45\jre\bin;C:\Program Files\TortoiseSVN\bin;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\DTS\Binn\;F:\note\SMSTestVC\HelloWorld\Debug;F:\note\SMSTestVC\Utils\Debug;F:\note\SMSTestVC\SMSTestVC\Debug USERNAME=Administrator OS=Windows_NT PROCESSOR_IDENTIFIER=x86 Family 6 Model 23 Stepping 6, GenuineIntel --------------- S Y S T E M --------------- OS: Windows XP Build 2600 Service Pack 3 CPU:total 2 (2 cores per cpu, 1 threads per core) family 6 model 23 stepping 6, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3 Memory: 4k page, physical 2095212k(807388k free), swap 4033316k(1711408k free) vm_info: Java HotSpot(TM) Client VM (20.45-b01) for windows-x86 JRE (1.6.0_45-b06), built on Mar 26 2013 13:40:03 by "java_re" with MS VC++ 7.1 (VS2003) time: Tue Sep 10 15:18:52 2013 elapsed time: 1 seconds
u010140887 2013-09-12
  • 打赏
  • 举报
回复
这个是java里面报的错: # # A fatal error has been detected by the Java Runtime Environment: # # EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x02ed2389, pid=4232, tid=6616 # # JRE version: 6.0_45-b06 # Java VM: Java HotSpot(TM) Client VM (20.45-b01 mixed mode, sharing windows-x86 ) # Problematic frame: # C [xxtSmsDll.dll+0x2389] # # An error report file with more information is saved as: # D:\xukai\Workspaces\MyEclipse 8.6\SMSend\hs_err_pid4232.log # # If you would like to submit a bug report, please visit: # http://java.sun.com/webapps/bugreport/crash.jsp # The crash happened outside the Java Virtual Machine in native code. # See problematic frame for where to report the bug.

50,528

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧