周末调试一则jni程序,有一处是向java返回对象数组,但是总是出错,报错如下: # # An unexpected error has been detected by Java Runtime Environment: # # EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x6d8df0ed, pid=2260, tid=3168 # # Java VM: Java HotSpot(TM) Client VM (11.2-b01 mixed mode, sharing windows-x86) # Problematic frame: # V [jvm.dll+0xdf0ed] # # An error report file with more informati...
by tomqq - Java文档中心 - 2009-04-26 22:51:33 阅读(2172) 回复(0)
Java Native Interface Specification—Contents http://java.sun.com/javase/6/docs/technotes/guides/jni/spec/jniTOC.html android jni Tips http://blog.chinaunix.net/u1/38994/showart_1099466.html 一个jni下c和java程序范例 http://blog.chinaunix.net/u1/38994/showart_1100966.html 如何编写jni方法 http://blog.chinaunix.net/u1/38994/showart_1099528.html 本文来自ChinaUnix博客,如果查看原文请...
一。java中字符串的返回很容易,和其它如int类型没有什么区别,只是最后的时候需要做一下类型转换。 jniEXPORT jstring jniCALL Java_stringTest_displayString (jniEnv * env, jclass obj){ jstring jstr; char str[]="Hello World\n"; jstr=env->NewStringUTF(str); return jstr; } 给出java和c类型对应关系,以及String转换函数 Java类型 本地类型 字节(bit) boolean jboolean 8, ...
1.从如何载入.so档案谈起
由于android的应用层的类都是以Java写的,这些Java类编译为Dex型式的Bytecode之后,必须靠Dalvik虚拟机(VM: Virtual...
昨天做的,今天记录一下供同志们参考。 能够实现 java调用C APIC 调用java APIC 异步调用java API,用于C中做异步处理过程(例如信号处理句柄,异步事件处理)中需要回调java api的情况,示例为定时器异步处理调用java的情况。 下载android-ndk-1.5_r1-linux-x86.zip也就是 android 所谓的NDK, 下载地址以及配置方法见我其他的文章。 在 sources目录下做librfid目录,目录里边的文件拷贝自 sources/examples/tow-libs/进行修...
android的SDK中没有包括jni的支持,而且对如何支持jni也没有任何文档说明。不过既然整个android平台是开源的,我们可以通过Google发布的源代码来找到一些线索(比如frameworks/base/media/jni/目录),依葫芦画瓢的实现上层JAVA程序通过jni来调用Native C程序中的函数。 依照下面的步骤可以实现一个非常简单的jni的实例程序: 1. 首先编写C模块,实现动态库。(关于如何在android中编译C模块的更多细节,请参考《 android原生...
android编译环境(1) - 编译Native C的helloworld模块
android编译环境本身比较复杂,且不像普通的编译环境:只有顶层目录下才有Makefile文件,而其他的每个component都使用统一标准的android.mk. android.mk文件本身是比较简单的,不过它并不是我们熟悉的Makefile,而是经过了android自身编译系统的很多处理,因此要真正理清楚其中的联系还比较复杂,不过这种方式的好处在于,编写一个新的android.mk来给android增加一个新的Compon...
android
的SDK中没有包括jni的支持,而且对如何支持jni也没有任何文档说明。不过既然整个
android
平台是开源的,我们可以通过Google发布的源代码来找到一些线索(比如frameworks/base/media/jni/目录),依葫芦画瓢的实现上层JAVA程序通过jni来调用Native C程序中的函数。
依照下面的步骤可以实现一个非常简单的jni的实例程序:
1. 首先编写C模块,实现动态库。(关于如何在android中编译C模块的更多细节,请参考《
Androi...
说明:
1.我的测试平台winXP,JBuildX(jdk1.4.2_04),vs.net2003.
2.参照网上的代码修改的,按照原先代码的分析,多维数组和这种二维数组的实现方式类似,没有测试。
3.这里不再分析,二维数组就是Object的元素仍然是Object,然后递归地一层层访问Object
用到的函数:
env->GetArrayLength(array) //得到数组长度
env->GetObjectArrayElement(array, i) //取得Object数组第i个元素
env->GetStri...