工作中有部分业务需要调用三方的dll文件,在网上搜集资料后测试调用成功,如下笔记希望能帮到你们!
Java可以使用Java Native Interface (JNI)来调用DLL文件。
1. 定义Native方法:使用Java的关键字“native”定义Java的方法,这个方法将在DLL文件中被实现。
2. 生成Java头文件:使用Java Development Kit中的Javah工具会生成一个C头文件(JavaNativeInterface.h)。
3. 创建一份C源文件,并实现JNI方法:导入生成的JavaNativeInterface.h头文件、实现Java方法中的native方法,并声明一个JNIEXPORT返回类型与Java方法返回类型相同的函数。
4. 将生成的C源文件编译成DLL文件:在Visual Studio中创建一个DLL项目并将源文件添加进来。生成DLL文件。
5. 加载DLL文件并调用方法:在Java中使用System.loadLibrary() API加载DLL文件。然后就可以使用Java的native方法来调用DLL文件中的函数了。
以下是代码示例,要使用此示例,首先需要使用Visual Studio进行两个步骤:
(1)编写DLL项目代码
(2)生成DLL库。
Dll_Test.h:
#ifndef __DLL_TEST_H__
#define __DLL_TEST_H__
#ifdef __cplusplus
extern "C" {
#endif
JNIEXPORT jint JNICALL Java_com_zeroin_myapp_DllTest_nativeAdd
(JNIEnv *, jobject, jint, jint);
JNIEXPORT jstring JNICALL Java_com_zeroin_myapp_DllTest_nativeHelloWorld
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
Dll_Test.c:
#include "com_zeroin_myapp_DllTest.h"
JNIEXPORT jint JNICALL Java_com_zeroin_myapp_DllTest_nativeAdd(JNIEnv *env, jobject obj, jint a, jint b)
{
return a + b;
}
JNIEXPORT jstring JNICALL Java_com_zeroin_myapp_DllTest_nativeHelloWorld(JNIEnv *env, jobject obj)
{
return (*env)->NewStringUTF(env, "Hello from DLL!");
}
在Visual Studio中生成此项目,你将得到一个名为“Dll_Test.dll”的DLL文件。
然后在Java中,你可以通过以下方式来使用DLL:文章来源:https://www.toymoban.com/news/detail-840446.html
// 加载DLL库
System.loadLibrary("Dll_Test");
public class DllTest {
// 原生方法,与DLL中的native方法对应
public native int nativeAdd(int a, int b);
public native String nativeHelloWorld();
// 测试
public static void main(String[] args) {
DllTest dll = new DllTest();
// 调用nativeAdd方法
System.out.println(dll.nativeAdd(1, 2));
// 调用nativeHelloWorld方法
System.out.println(dll.nativeHelloWorld());
}
}
通过上述步骤,Java就可以成功使用DLL了。文章来源地址https://www.toymoban.com/news/detail-840446.html
到了这里,关于java调用DLL保姆级教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!