码迷,mamicode.com
首页 > 其他好文 > 详细

浅试 JNI编程

时间:2015-09-03 16:30:46      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:

好吧,开始我的第一个JNI试验小程序

HelloWorld.java 代码清单

 1 public class HelloWorld {
 2 
 3     static {
 4         System.loadLibrary("HelloWorld");
 5     }
 6 
 7     public static native void hello(String msg);
 8 
 9 
10     public static void main(String args[]){
11         HelloWorld hw = new HelloWorld();
12         hw.Display();
13     }
14 
15     void Display(){
16         System.out.println("hello,world");
17     }
18 
19 }

 记得文件名必须和类名一致,编译

  javac HelloWorld

利用 javah 命令生成c 的头文件,命令形式 javah  <packagename>.<classname>,因为我没有定义包名,所以直接是类名:

  javah HelloWorld

这样在目录下将会生成以包名为文件名的头文件 HelloWorld.h

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class HelloWorld */

#ifndef _Included_HelloWorld
#define _Included_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     HelloWorld
 * Method:    hello
 * Signature: (Ljava/lang/String;)V
 */
JNIEXPORT void JNICALL Java_HelloWorld_hello
  (JNIEnv *, jclass, jstring);

#ifdef __cplusplus
}
#endif
#endif

 

下面我们需要建立HeloWorld的动态共享库,先创建一个HelloWorld.c, 然后将头文件中的函数定义拷贝过来,并且指定参数的变量名

#include "HelloWorld.h"

JNIEXPORT void JNICALL Java_HelloWorld_hello(JNIEnv * env, jclass jz, jstring s)
{
}

 

这是个毫无用处的函数,在java程序中我们也只有声明,没有调用,现在我只是试验他是否能正常装载。用 gcc 命令进行编译

浅试 JNI编程

标签:

原文地址:http://www.cnblogs.com/zengsiyu/p/4780263.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!