javay调用动态链接库

本文介绍如何使用Java调用本地DLL文件的具体步骤,包括创建Java类、编译、生成头文件、实现本地方法及构建DLL文件。

(1)写一个JAVA文件
public class testdll
{
 static{
  System.loadLibrary("goodluck");
 }
 public native int getValue();
 public native void setValue(int i);

 public static void main(String args[])
 {
  testdll td=new testdll();
  td.setValue(10);
  System.out.println(td.getValue());
 }
}
(2)编译javac testdll.java
(3)运行javah testdll生成一个testdll.h文件
(4)实现步骤一中声明的方法
打开VC++6.0,建立一个dll空工程,把testdll.h导入工程中,新建一个test.cpp源文件
打开testdll.h,发现里面有两个方法:
/*
 * Class:     testdll
 * Method:    getValue
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_testdll_getValue
  (JNIEnv *, jobject);

/*
 * Class:     testdll
 * Method:    setValue
 * Signature: (I)V
 */
JNIEXPORT void JNICALL Java_testdll_setValue
  (JNIEnv *, jobject, jint);

JNIEXPORT不用管,第二个单词jint/void是返回值,jint相当于int类型,JNICALL不用管,每一个方法名前都有前缀Java_testll_,前两个参数JNIEnv *和jobject不用管,第二个方法的第三个参数jint就是java文件里的int i。
上面有声明了,现在就要实现这两个方法,把代码补充进来吧:)
示例代码:
#include "testdll.h"
int i=0;
JNIEXPORT jint JNICALL Java_testdll_getValue
(JNIEnv *, jobject){
 return i;
}
JNIEXPORT void JNICALL Java_testdll_setValue
(JNIEnv *, jobject, jint j){
 i=j;
}

编译
此时编译会出现error,主要是提示找不到jni.h(这个包含在testdll.h)里,需要我们把jni.h、jni_md.h复制到C:/Program Files/Microsoft Visual Studio/VC98/Include这个目录里(默认安装目录,如果安装VC不是这个目录,请自行找到Include目录)。
jni.h------------------jdk安装目录/include
jni_md.h------------jdk安装目录/include/win32
然后再编译,构建,就有了test.dll这个动态链接库文件了,把它重命名成goodluck.dll,然后复制到testdll.java的目录下,运行吧:)
java testdll
结果:
10

Java源码包是Java开发的基础工具,它包含了一些Java核心类库以及各种类和接口的源代码。通过查看源码包,我们可以了解Java中各种类的实现细节,同时也可以学习和研究Java的内部机制。 Java源码包主要分为以下几个部分: 1. java.lang:包含了Java语言的基础类和接口,如Object类、Thread类等。这些类提供了Java平台的基础功能,是其他类库和应用程序的核心基础。 2. java.util:提供了一些常用的数据结构和算法实现,如ArrayList、HashMap等。这些类可以帮助我们进行数据的存储和操作,是Java开发中经常用到的类库之一。 3. java.io:提供了对输入输出流进行操作的类和接口,如FileInputStream、FileOutputStream等。这些类可以帮助我们进行文件的读写操作,是Java中处理文件的重要工具。 4. java.net:提供了网络编程相关的类和接口,如Socket、ServerSocket等。这些类可以帮助我们进行网络通信,实现客户端和服务器之间的数据传输。 除了以上几个核心的源码包,Java还提供了许多其他的源码包,如java.awt、java.applet等,用于支持图形界面和Web应用开发。 通过查阅源码包,我们可以更好地理解Java语言的运行机制,学习Java的核心类和接口的用法,同时也可以通过修改源码来扩展和定制Java的功能。因此,熟悉源码包是Java开发者必备的技能之一,它可以帮助我们更好地理解和应用Java开发。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值