美文网首页
一种EXCEPTION_ACCESS_VIOLATION (0x

一种EXCEPTION_ACCESS_VIOLATION (0x

作者: 愤怒的桑树 | 来源:发表于2019-07-17 10:13 被阅读0次

在java与c构建多实例的案例中,java中对象保存一个long型成员变量,作为对应c实例的指针,jni层在新建c对象后,将对象指针(64位)转成长整型返回给java成员变量保存。然而在某些情况下,调用c实例的方法会出现ACCESS_VIOLATION,并且在windows上会报错,但在linux上就没问题。经过排查,问题最终定位如下:

jni.h中,关于jlong(java long)的typedef并不是唯一的,在windows上,long总是32位(所以在linux上没问题),所以在jni层将地址转长整型的操作,必须要用__int64long, long int, long long 都不行)保存变量,并返回给java。

相关文章

网友评论

      本文标题:一种EXCEPTION_ACCESS_VIOLATION (0x

      本文链接:https://www.haomeiwen.com/subject/lewflctx.html