工作中有部分業(yè)務需要調(diào)用三方的dll文件,在網(wǎng)上搜集資料后測試調(diào)用成功,如下筆記希望能幫到你們!
Java可以使用Java Native Interface (JNI)來調(diào)用DLL文件。
1. 定義Native方法:使用Java的關(guān)鍵字“native”定義Java的方法,這個方法將在DLL文件中被實現(xiàn)。
2. 生成Java頭文件:使用Java Development Kit中的Javah工具會生成一個C頭文件(JavaNativeInterface.h)。
3. 創(chuàng)建一份C源文件,并實現(xiàn)JNI方法:導入生成的JavaNativeInterface.h頭文件、實現(xiàn)Java方法中的native方法,并聲明一個JNIEXPORT返回類型與Java方法返回類型相同的函數(shù)。
4. 將生成的C源文件編譯成DLL文件:在Visual Studio中創(chuàng)建一個DLL項目并將源文件添加進來。生成DLL文件。
5. 加載DLL文件并調(diào)用方法:在Java中使用System.loadLibrary() API加載DLL文件。然后就可以使用Java的native方法來調(diào)用DLL文件中的函數(shù)了。
以下是代碼示例,要使用此示例,首先需要使用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:文章來源:http://www.zghlxwxcb.cn/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();
// 調(diào)用nativeAdd方法
System.out.println(dll.nativeAdd(1, 2));
// 調(diào)用nativeHelloWorld方法
System.out.println(dll.nativeHelloWorld());
}
}
通過上述步驟,Java就可以成功使用DLL了。文章來源地址http://www.zghlxwxcb.cn/news/detail-840446.html
到了這里,關(guān)于java調(diào)用DLL保姆級教程的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!