java调用DLL保姆级教程

这篇具有很好参考价值的文章主要介绍了java调用DLL保姆级教程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

工作中有部分业务需要调用三方的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:


// 加载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模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Go语言中,如何调用C++的dll文件

    我将给出一个完整的示例来说明如何调用C++ DLL文件。首先,我们将创建一个简单的C++ DLL,然后编写Go代码来调用该DLL。 创建C++ DLL文件( example.cpp ): 编译C++代码为DLL文件: 使用MinGW编译器编译 example.cpp 文件,生成 example.dll 文件。 -Wl,–out-implib,libexample.a -Wl,–output-def,exa

    2024年03月12日
    浏览(106)
  • python 调用dll 详解

    准备 将动态库与py文件放在同一目录下 引入ctypes库 加载动态库 数据类型 ctypes数据类型 C数据类型 c_char char c_short short c_int int c_long long c_ulong unsigned long c_float float c_double double c_char_p char* c_void_p void* 基本数据类型参数 argtypes :定义函数的参数类型 restype :定义函数的返回值类

    2024年02月14日
    浏览(43)
  • 不同编程语言下CH347DLL的调用方法

            CH347为一款USB转JTAG/SPI/IIC/GPIO/UART接口的转换芯片,此处总结一下开发时所遇到的在C/C++、Python、C#下调用CH347DLL的方法,若有其他需要补充的也可一起交流。         基于WCH官方Demo板做的代码验证。         可参考WCH官网CH347EVT/Tools下工程代码,此处则不再重复    

    2024年02月16日
    浏览(37)
  • Python调用动态链接库(DLL)

    Python调用动态链接库(DLL) 动态链接库(Dynamic Link Libraries,简称DLL)是一种被多个程序共享的库文件,可以被用于将程序分解为小模块,减少内存占用,加快程序运行速度。而Python作为一种高级编程语言,可以方便地调用外部的DLL文件。 在Python中,可以使用ctypes模块来调用

    2024年02月13日
    浏览(49)
  • 如何在Java中调用DLL:详细图解

    如何在Java中调用DLL:详细图解 在Java开发中,有时候需要与动态链接库(DLL)进行交互,以实现更高级的功能。本文将详细介绍如何使用Java调用DLL,并提供相应的代码和描述。 第一步:准备DLL文件 首先,确保你已经获得了需要调用的DLL文件。DLL文件通常由其他编程语言编写

    2024年02月03日
    浏览(50)
  • Java JNA调用dll动态链接库

    记录学习内容 C编译dll环境:         IDE:Clion         ToolChains:MinGW64 Java环境:         版本:jdk1.8 64位         JNA依赖版本:5.2.0 (可根据需要升级,本文以此版本为例) JNA(Java Native Access )提供一组Java工具类用于在运行期间动态访问系统本地库(native library:如W

    2024年02月12日
    浏览(41)
  • R语言无法调用stats.dll的问题解决方案[补充]

    在去年10月份,出过一起关于R语言无法调用stats.dll的问题解决方案,今天(你看到后是昨天)不知道为什么,安装包,一直安装不了,真的是炸裂了。后面再次把R与Rstuido升级。说实话,我是真不想折腾升级这些,因为,只要升级,环境多多少少 可能 会有变化,这次,我就是

    2024年02月15日
    浏览(50)
  • visual studio编写DLL,python调用

    选择第一个c++ DLL, 然后项目源文件下右击新建项,这里名字随便取,在代码中输入一下内容: 在visual studio的项目右击属性 选择不使用编译头,然后点击点击生成解决方案 就可以生成DLL文件了 (PS:前面截图代码忘记添加EXPORT,请参考代码框的代码) 然后python调用即可 如果

    2024年02月09日
    浏览(44)
  • Python如何调用DLL库?——实例详解及代码

    Python如何调用DLL库?——实例详解及代码 在Python中,您可以通过调用DLL库完成各种功能,来满足不同的需求。调用DLL库意味着从外部获取了一些函数,可以在Python中直接调用这些函数,这对于Python程序员来说是一种非常有用的技能。本文将为大家介绍如何在Python中调用DLL库。

    2024年02月06日
    浏览(43)
  • 在python中通过调用dll来提高运行速度

    最近项目中需要录制键鼠命令,然后再通过注入的方式回放录制过程。一般来说,普通的一些点击命令完全可以通过python的一些包来完成键鼠模拟操作,比如通过pyautogui包。但是,鼠标移动过程中,如果采用频率很高的话,比如1s之类采样50个点像素坐标,那么就会发现,如果

    2024年02月12日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包