JNI学习笔记(二)JNI中的java语言与本地C/C++语言之间的映射(附例子)
接着昨天的(JNI学习笔记(一)第一个JNI详细例子配图文)
今天学习一下JNI中的java语言与本地C/C++语言之间的映射;我们在进行实际编写程序的时候,函数的传参与函数的返回值是非常常见,也可是说是必须的事情了,今天就先从Java中的8大基本类型说起;
Java与JNI中的基本类型映射表如下:


下面我们看个例子,在Java中去调用有返回值的本地方法,本地方法返回一个字符串:
java代码如下:
jobject :这个参数具体代表着什么要取决于在被转换的本地方法是静态方法还是实例方法;如果该本地方法作为实例方法时,那么这个参数相当于对象本身(相当于this.);如果该本地方法作为静态方法时,那么这个参数相当于当前类;(重要)jstring 这个就是传进来的字符串了(java的八大基本类型与C/C++的映射关系表在上面图上了,大家可以对照一下)
了解了以上这些,按照我们例子的要求,就要去实现本地方法返回字符串了,那还等什么,直接写代码呗;按照我们以前C语言的习惯,那还不简单。直接printf()与return该字符串呗,于是乎就出现之类下面的代码了:package com.jiangqq.jni;/** * * @author jiangqq * <a href=http://blog.csdn.net/jiangqq781931404>CSND博客</a> * */public class Test_Jni02 {/** * 声明一个返回字符串的本地方法 * @param str * @return 输入的字符串 */public native String getLineStr(String str);public static void main(String[] args) { Test_Jni02 test=new Test_Jni02(); String lineString=test.getLineStr("The input String :"); System.out.println( "The input String :"+lineString); } static { System.loadLibrary("nativeCode3"); }}
例子代码的现在链接:http://download.csdn.net/detail/jiangqq781931404/4465152
接下来将要学习一下Java语言与本地语言的相互调用,继续看书学习了。。。