通过JNI,C调用Java方法,java返回值是数组组该怎么用

1>  编写带有native声明方法的Java类并且该方法只定义不实现,后期由c++负责实现:

2>  由于后期的C++实现代码最终会被编译为一个动态库.dll因此需要在Java类中定义一个静态代码块,提前加载該动态库假设动态的名字为hellocpp.dll:

JNIEnv*指向一个位置,该位置包含一个指向函数表的指针表中的每一项都是一个指向JNI函数的指针,native方法通过JNI函數访问JVM的中的数据

第二个参数对于非静态方法为jobject对于静态方法为jclass。jobject表示调用native方法对象自身的引用如同C++中的this指针;jclass表示定义native方法的类的引用。

如下介绍带有参数返回值的native方法:

:: 函数对Get/ReleaseStringCritical的作用于Get/ReleaseStringChars类似但是对于程序员而言,该函数对之间的代码相当于“临界区”在該“临界区”内,native代码不能调用任何的JNI函数否则将引起当前线程阻塞。

实际表示的 C 类型(Win32

获得/释放一个Unicode格式的字符串指针可能返回┅个字符串的副本

获得/释放一个UTF-8格式的字符串指针,可能返回一个字符串的副本

返回Unicode格式字符串的长度

返回UTF-8格式字符串的长度

根据Unicode格式的C芓符串创建一个Java字符串

根据UTF-8格式的C字符串创建一个Java字符串

获得/释放一个Unicode格式的字符串指针可能返回一个字符串的副本【在该函数对区间內,不能使用任何JNI函数】

将Unicode格式的String复制到预分配的缓冲区中

将UTF-8格式的String复制到预分配的缓冲区中

}

我要回帖

更多关于 C数组 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信