首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 互联网 >

JNI根本学习

2012-07-05 
JNI基本学习Jni程序开发的一般操作步骤如下:?1.编写java中的调用类2.用javah生成c/c++原生函数的头文件3.c

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 . -jniTestHello

?

?

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

热点排行