您的位置:首页 > 编程语言 > C语言/C++

搭建Window环境下Jni开发步骤(2)

2013-06-06 22:00 211 查看
一,建立一个java文件

1.新建hello.java文件

public class Hello{

private native void print();

public static void main(String[] args){

new Hello().print();

}

static{

System.loadLibrary("HelloDll");

}

}

Hello类首先声明了一个private native print方法. static那几行是本地库。

在Java代码中声明本地方法必须有"native"标识符,native修饰的方法,在Java代码中

只作为声明存在。

在调用本地方法前,必须首先装载含有该方法的本地库. 如Hello.java中所示,置

于static块中(即HelloDll),在Java VM初始化一个类时,首先执行这部分代码,这可保证调用本地方

法前,装载了本地库。

2.编译该java文件并生成头文件

用命令行javac编译,可以在该文件下生成Hello.class文件,然后用javah -jni Hello。译者:"-jni"为默认参数,可有可无.上述命令,生成Hello.h文件.该文件核心代码为:

JNIEXPORT void JNICALL Java_Hello_print

  (JNIEnv *, jobject);

3.利用生成的.h头文件编写C/C++文件

必须根据javah生成的本地函数声明实现函数,如下:

#include<jni.h>

#include<stdio.h>

#include "Hello.h"

JNIEXPORT void JNICALL Java_Hello_print

(JNIEnv *nev, jobject jthis)

{

printf("hello\n");

return;

}

4.编译该c/c++文件(推荐用VC6.0)

我这里推荐用编译器编译,虽然大多数人用命令行编译,但不知道是我的VC配置路径有问题还是其他什么问题,在命令行里编译总是出现各种错误,所以推荐一个比较笨的办法,你在VC6.0里新建工程->Win32 Dynamic-Link Library(看清楚)。然后选择空的DLL工程,接着新建C++ Header File,取名为Hello.h,将刚才生成的头文件内容复制进去,然后新建C++ Sourcs File,也将你自己写的C++文件内容复制进去。

接下来这一步很重要,如图所示:

在VC里选择 工具->选项->目录,在右上角目录栏选择Include files



可以看到下面多出来两个jdk的路径,对,就是你jdk安装路径,分别为include和win32文件夹下,你可以打开这两个文件夹,在下面可以看到jni.h和jni_md.h这另个文件,其实该路径就是引入这两个文件。

这项完成后就可以编译该工程了,先编译,然后运行,你可以在debug目录下看到生成了对应的DLL文件,接着你将该DLL文件复制到你java文件那个文件夹下,(注意:那个dll文件的名字一定要是你java代码里static关键字下你写的那个名字)。然后再命令行里java Hello。就可以看到控制台输出"hello"了。



可以看到控制台输出hello。即一个简单的windows下jni例子成功了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java jni C++