java JNI 的实现(2)-java和C/C++的相互调用.
2014-12-02 02:07
405 查看
目录
概述
一,java代码
二,稍微注意通过javah生成的'C/C++'.h头文件和源java代码的关系
三,在C/C++中实现java的native方法(完整C/C++)
1,修改age,即Java_juk_demo_JSay_changeAge方法
2,调用java中的'javaStatic'方法,和上面C/C+实现方法相似
3,最后测试
概述
从第一篇java JNI 的实现(1)-又进一步加深对JVM实现的理解对JNI有了大致的理解之后,并知道JNI中java如何调用C/C++等,这篇文章我们进一步将JNI中,java和C/C++的相互调用.
一,java代码:
我们稍微对类做了更改,如下:
View Code
2,调用java中的'javaStatic'方法,和上面C/C+实现方法相似,不过由于在java源码中,native被定义成了类方法,所以不用获得jclass,而直接从参数获取.同理,通过(JNIEnv *)获得java中的javaStatic方法,并调用.
最后,我们再java主函数中进行测试,结果为:
概述
一,java代码
二,稍微注意通过javah生成的'C/C++'.h头文件和源java代码的关系
三,在C/C++中实现java的native方法(完整C/C++)
1,修改age,即Java_juk_demo_JSay_changeAge方法
2,调用java中的'javaStatic'方法,和上面C/C+实现方法相似
3,最后测试
概述
从第一篇java JNI 的实现(1)-又进一步加深对JVM实现的理解对JNI有了大致的理解之后,并知道JNI中java如何调用C/C++等,这篇文章我们进一步将JNI中,java和C/C++的相互调用.
一,java代码:
我们稍微对类做了更改,如下:
Compiled from "JSay.java" public class juk.demo.JSay extends java.lang.Object{ public static java.lang.String country; Signature: Ljava/lang/String; public int age; Signature: I public juk.demo.JSay(); Signature: ()V public native void changeAge(); Signature: ()V public static native void staticSay(); Signature: ()V public void getVoid(); Signature: ()V public java.lang.String getString(); Signature: ()Ljava/lang/String; public int getInt(); Signature: ()I public int[] getIntArray(); Signature: ()[I public static void javaStatic(); Signature: ()V public static void main(java.lang.String[]); Signature: ([Ljava/lang/String;)V }
View Code
2,调用java中的'javaStatic'方法,和上面C/C+实现方法相似,不过由于在java源码中,native被定义成了类方法,所以不用获得jclass,而直接从参数获取.同理,通过(JNIEnv *)获得java中的javaStatic方法,并调用.
最后,我们再java主函数中进行测试,结果为:
cn, center china before invoke native,age=20 after invoke native,age=22
相关文章推荐
- 通过JNI实现Java和C++的相互调用(转)
- 通过JNI实现Java和C++的相互调用(转)
- 通过JNI实现Java和C++的相互调用(转)
- 通过JNI实现Java和C++的相互调用(转)
- 通过JNI实现Java和C++的相互调用
- 通过JNI实现Java和C++的相互调用(转)
- 通过JNI实现Java和C++的相互调用(转)
- 通过JNI实现Java和C++的相互调用(转)
- 通过JNI实现Java和C++的相互调用(转)
- 通过JNI实现Java和C++的相互调用(转)
- 通过JNI实现Java和C++的相互调用(转)
- 通过JNI实现Java和C++的相互调用(转)
- 通过JNI实现Java和C++的相互调用(转)
- 通过JNI实现Java和C++的相互调用(转)
- 通过JNI实现Java和C++的相互调用(转)
- 通过JNI实现Java和C++的相互调用(转)
- 通过JNI实现Java和C++的相互调用(转)
- 通过JNI实现Java和C++的相互调用
- 通过JNI实现Java和C++的相互调用
- 通过JNI实现Java和C++的相互调用(转)