JNI基本学习

Jni程序开发的一般操作步骤如下:

 

1.编写java中的调用类

2.用javah生成c/c++原生函数的头文件

3.c/c++中调用需要的其他函数功能,实现原生函数(原则上可以调用任何资源)

4 将项目依赖的所有原生库和资源加入到java项目的java.library.path

5 生成java程序

6.发布java应用和dll库

 

1、 在eclipse项目中新建一个TestHello.java,输入以下内容:

public class TestHello {



static {

System.loadLibrary("TestHello");

}



public static native void hello(String msg);



public static void main(String[] args) {



hello("Hello,Kimm!");



}



}

编译生成TestHello.class文件。

 

2. 在java工程的bin目录下:

 执行如下命令 生成TestHello.h头文件(就是jni代理stub的接口)   
javah -classpath . -jni TestHello

 

 

3.   在VC6中新建一个项目TestHello, 项目类型为Win32 Dynamic-Link Library。点击OK。

 

在弹出的窗口中选择A simple DLL project,点击Finish。

 

打开项目所在的文件目录,将步骤2中生成的TestHello.h文件复制到此目录。点击左边中间的FileView,切换到文件浏览模式。在Header Files上点击右键,选择Add Files to Folder…。

选择TestHello.h文件,点击OK。

 

打开StdAfx.h文件,再最后面添加:

 

#include <jni.h>

#include "TestHello.h"

 

 4.打开TestHello.cpp文件,在最后面添加一段代码:

JNIEXPORT void JNICALL Java_TestHello_hello(JNIEnv * env, jclass obj, jstring jMsg)

{

const char *strMsgPtr = env->GetStringUTFChars( jMsg , 0);



MessageBox( 0, strMsgPtr,"Message box from VC++ ", 0 );



env->ReleaseStringUTFChars( jMsg, strMsgPtr);



}
在VC的菜单上选择Tools-Options…,打开选项对话框。在Directories文件夹,添加上jdk所在文件夹下的include和include\win32文件夹。

 

点击VC上的菜单项Build-Build All,生成TestHello.dll。

 

4、 将VC项目Debug文件夹中的TestHello.dll复制到TestHello.class所在的文件夹下。

5、 在命令行下输入java TestHello,弹出MessageBox对话框。调用win32 api成功。

 

 备注:在编译时需要复制jdk/include下面的jawt_md.h,jni.h,jni_md.h到VC98\Include目录下。

用java:System.out.println( System.getProperty("java.library.path"))找到library路径,然后把生产的TesthHello.dll文件放在该目录下即可。

 

更多参考 http://setting.iteye.com/blog/304594

你可能感兴趣的:(jni)