Java JNI 调用DLL库

JNI

Java Name Interface 的缩写,这个很重要,看到这个就知道这是干什么的。

JNI主要是解决Java调用DLL库文件的问题。

具体的下面做详细说明:

首先配置java(这个就不多说了)

在来检查一下JNI是否好用 cmd——javah

好了我们开始编写简单的代码来说明这个JNI到底怎么用:

package test;

 

public class TestJNI {

 

    public native void displayHelloWorld();

 

    static {

        System.loadLibrary("JNITest");

    }

 

    public static void main(String[] args) {

        new TestJNI().displayHelloWorld();

    }

 

}

以上是基本的代码,我们知道java 是运行在虚拟机上的,那么DLL是面对操作系统的,这个就麻烦了,因为在不同层,但java有一个关键字native,聪明的sun公司它是用来解决这个问题。

好了我们编译上面的文件然后在cmd中输入 javah –o 生成后的名字 –classpath 需要的jar java类名

例子:

 javah -o testJNI.h test.TestJNI

文件生成了

/* DO NOT EDIT THIS FILE - it is machine generated */

#include "jni.h"

/* Header for class test_TestJNI */

 

#ifndef _Included_test_TestJNI

#define _Included_test_TestJNI

#ifdef __cplusplus

extern "C" {

#endif

/*

 * Class:     test_TestJNI

 * Method:    displayHelloWorld

 * Signature: ()V

 */

JNIEXPORT void JNICALL Java_test_TestJNI_displayHelloWorld

  (JNIEnv *, jobject);

 

#ifdef __cplusplus

}

#endif

#endif

 

好了我们实现一下 上面的东西然后看看能不能有东西出来:

1.      创建一个C++ Class library工程

2.      最佳3个头文件jni.hjni_md.htest_TestJNI.h

3.      实现方法

// This is the main DLL file.

 

#include "stdafx.h"

#include "jni.h"

#include "test_TestJNI.h"

 

JNIEXPORT void JNICALL Java_test_TestJNI_displayHelloWorld

(JNIEnv *evn, jobject jobj)

{

        printf("Hello World");

}

好了以上就好了

下面我们将生成的DLL放到Java工程根目录下

出项 Hello World 实现成功(Success

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值