JNI学习入门1

来源:互联网 发布:js防水涂料颜色 编辑:程序博客网 时间:2024/05/16 08:01

Java部分样例:

public class HelloWorld {

static {
System.loadLibrary("HelloWorldDll");//HelloWorldDll为要加载的dll文件名
}
public native static void MyMethod();//自定义的本地方法
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new HelloWorld().MyMethod();//调用
}


}


接下来编译成clss文件,命令行到class的目录下:cd .... ,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:    MyMethod
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_HelloWorld_MyMethod
  (JNIEnv *, jclass);


#ifdef __cplusplus
}
#endif
#endif

/******************************************************/

暂且不管是什么样、

打开VC++6.0,新建工程,选择Win32 Dynamic-Link Library 输入工程名(这里就是我们在上面说的HelloWorldDll

把HelloWorld.h拷贝到工程下。

VC++工程中在Header Files点击右键添加文件到目录   选择HelloWold.h

在Source Files下随意建立一个cpp文件:

这里是:

#include <jni.h> //这个是必须要加入的
#include <stdio.h>
#include "HelloWorld.h"


JNIEXPORT void JNICALL Java_HelloWorld_MyMethod //这个方法是HelloWorld.h中出现的部分
  (JNIEnv * e, jclass s){
 printf("hello world,the first world");
 return;
}

编译,运行。(这里有可能出现问题,到时百度

在项目的Debug下将会产生一个HelloWorldDll.dll

将其拷贝到java工程项目的bin 目录下就搞定了

此时如果是用命令行运行:java HelloWorld没有任何问题

但是在Eclipse中将会出错

此时需要在环境变量中配置Path:添加我们项目bin目录:如我的就是:F:\WORKSPACE\jnihello\bin

此时就是见证奇迹的时刻了

0 0
原创粉丝点击