Java:使用javah生成.h文件并完成dll调用
Posted 你是小KS
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java:使用javah生成.h文件并完成dll调用相关的知识,希望对你有一定的参考价值。
当前环境:jdk1.8
、vs2015
1. 声明
当前内容主要为javah的使用,并完成dll打包操作并实现java调用dll文件
主要内容:
- 使用javah生成.h文件
- 使用vs studio 2015实现.h文件并打包为dll
- 使用java方式调用dll
2. 使用javah生成.h文件
javah用于native方法的.h文件生成
1.创建具有native的类
public class JavahTest
public void show()
System.out.println("11111");
public static native void cHello();
这里提供一个native的cHello方法
2.使用命令行执行javah操作生成.h文件
进入classes文件并执行:javah -classpath . com.hy.java.javah.JavahTest
此时就会生成.h文件
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_hy_java_javah_JavahTest */
#ifndef _Included_com_hy_java_javah_JavahTest
#define _Included_com_hy_java_javah_JavahTest
#ifdef __cplusplus
extern "C"
#endif
/*
* Class: com_hy_java_javah_JavahTest
* Method: cHello
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_com_hy_java_javah_JavahTest_cHello
(JNIEnv *, jclass);
#ifdef __cplusplus
#endif
#endif
3. 使用vs studio生成对应的dll文件
1.打开vs并创建控制台程序
此时一定要选择DLL,就是为了在生成时生成dll文件
2.将.h文件导入到vs中一定要在文件夹中看到这个文件
正常情况下由于没有导入特定的链接库,所以.h中的文件会报错
3.引入jdk的动态链接库
此时.h文件不会出错了
4.开始实现该方法
#include "com_hy_java_javah_JavahTest.h";
JNIEXPORT void JNICALL Java_com_hy_java_javah_JavahTest_cHello(JNIEnv *env, jclass a)
printf("welcome to use dll to print word!");
5.开始生成dll文件(按照不同的机器生成不同位数的dll)
生成成功后的结果
4. 在java中调用该dll文件
直接拷贝该文件到项目的一个地方
开始编写java代码并调用native方法
public class JavahTest
public void show()
System.out.println("11111");
public static native void cHello();
public static void main(String[] args)
System.load("D:\\\\eclipse-workspace\\\\Java8BasicReStudy\\\\src\\\\com\\\\hy\\\\java\\\\javah\\\\dll\\\\javadll.dll");
JavahTest.cHello();
执行结果:
实现完成
以上是关于Java:使用javah生成.h文件并完成dll调用的主要内容,如果未能解决你的问题,请参考以下文章