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
此时就是见证奇迹的时刻了