Java调用dll、不是难事

来源:互联网 发布:解可新最优化答案 编辑:程序博客网 时间:2024/05/17 02:26

1. 创建一个类

2. 使用javah -jni产生头文件
3. 用本地代码实现头文件中定义的方法,将编译生成的dll文件及lib文件复制到java类所在目录中
4. 测试
 
 
1、创建java项目(Eclipse/MyEclipse)
public class Test {
static{
System.loadLibrary("Dll");
}
 
public native static int getResult();
 
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(getResult());
}
 
}
 
 
2、进去项目中的bin文件夹(此文件保存的都是编译后的字节码文件)
        在cmd中使用javah Test(bin目录下)即可生成Test.h  VC++的头文件
        代码如下不需修改:
 /* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class Test */
 
#ifndef _Included_Test
#define _Included_Test
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     Test
 * Method:    getResult
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_Test_getResult
  (JNIEnv *, jclass);
 
#ifdef __cplusplus
}
#endif
#endif
 
 
 
 
3.将jdk安装路径下 三个文件复制到 Visual Studio.net的安装目录下的X:\.....VS2012\VC\include目录中  
  注:版本不同,可自己找到相应目录即可
  \jdk\include\jni.h 
  \include\win32\jawt_md.h
  \jdk\include\win32\jni_md.h
  打开VC++,新建一个DLL工程,选择空项目,命名为MyDLL。
  将Test.h复制到该项目下
       在头文件中添加进去
  新建Test.cpp,根据Test.h实现相应函数。
       代码如下:
 
#include"Test.h"
#include<stdio.h>
 
JNIEXPORT jint JNICALL Java_Test_getResult
  (JNIEnv *, jclass){
return 99;
}
 
编译生成MyDLL.dll及MyDLL.lib,将其复制到java项目中
 
4、运行即可 会在控制台打印99