java中通过jni调用c函数的过程-凯发app官方网站

凯发app官方网站-凯发k8官网下载客户端中心 | | 凯发app官方网站-凯发k8官网下载客户端中心
  • 博客访问: 114819
  • 博文数量: 83
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 50
  • 用 户 组: 普通用户
  • 注册时间: 2013-10-31 11:07
个人简介

弃我去者,昨日之日不可留; 乱我心者,今日之日多烦忧。

文章分类

(83)

  • (5)
  • (65)
  • (3)
  • (10)
  • (0)
最近访客
相关博文
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·

分类: java

2014-11-13 15:51:20

java中通过jni调用c函数的过程

1、  编写java代码 hellojni.java

点击(此处)折叠或打开

  1. public class hellojni {
  2.     
  3.     /**
  4.      * @param args
  5.      */
  6.     //本地方法声明
  7.     native void printhello();
  8.     native void printstring(string str);
  9.     //加载库
  10.     static { system.loadlibrary("hellojni");}
  11.     
  12.     public static void main(string[] args) {
  13.         // todo auto-generated method stub
  14.         hellojni myjni = new hellojni();
  15.         //调用本地方法
  16.         myjni.printhello();
  17.         myjni.printstring("hello world from printstring fun");

  18.     }

  19. }

2、  编译 hellojni.java 生成hellojni.class

d:\users\lusi\jni\jni-1>  javac  hellojni.java

3、
 生成c语言头文件 hellojni.h

d:\users\lusi\jni\jni-1>  javah hellojni

如果程序有包的话要在类的前面加上包名 比如javah  com.pocket.hellojni

点击(此处)折叠或打开

  1. /* do not edit this file - it is machine generated */
  2. #include <jni.h>
  3. /* header for class hellojni */

  4. #ifndef _included_hellojni
  5. #define _included_hellojni
  6. #ifdef __cplusplus
  7. extern "c" {
  8. #endif
  9. /*
  10.  * class: hellojni
  11.  * method: printhello
  12.  * signature: ()v
  13.  */
  14. jniexport void jnicall java_hellojni_printhello
  15.   (jnienv *, jobject);

  16. /*
  17.  * class: hellojni
  18.  * method: printstring
  19.  * signature: (ljava/lang/string;)v
  20.  */
  21. jniexport void jnicall java_hellojni_printstring
  22.   (jnienv *, jobject, jstring);

  23. #ifdef __cplusplus
  24. }
  25. #endif
  26. #endif

4、  编写c程序 hellojni.c


点击(此处)折叠或打开

  1. #include "hellojni.h"
  2. #include <stdio.h>

  3. //添加名称为env与obj的两个参数
  4. jniexport void jnicall java_hellojni_printhello(jnienv *env, jobject obj)
  5. {
  6.     printf("hello world!\n");
  7.     return;
  8. }
  9. jniexport void jnicall java_hellojni_printstring(jnienv *env, jobject obj, jstring string)
  10. {
  11.     const char **str = (*env)->getstringutfchars(env, string, 0);
  12.     printf("%s!\n");

  13.     return;
  14. }

5、  生成c共享库 hellojni.dll

d:\users\lusi\jni\jni-1> cl -i "d:\program files\java\jdk1.8.0_25\include" -i "d

\program files\java\jdk1.8.0_25\include\win32" -ld hellojni.c -fejnifunc.dll

6、  执行java程序

d:\users\lusi\jni\jni-1> java hellojni












阅读(1199) | 评论(0) | 转发(0) |
0

上一篇:

下一篇:c程序控制java端代码

给主人留下些什么吧!~~
")); function link(t){ var href= $(t).attr('href'); href ="?url=" encodeuricomponent(location.href); $(t).attr('href',href); //setcookie("returnouturl", location.href, 60, "/"); }
网站地图