java调用dll里面方法_java调用dll方法总结

常用的就是jni,jnative(基于jni封装了自己的jar包) 注意:java调用dll,必须dll里做了对应的处理。列如:方法名必须为_java_包名_类名_方法名

使用JNI调用dll步骤

新建一个java项目,将dll文件放入src下

配置改项目环境jre下native目录,指向src

项目jdk一定不要用eclipse自带的,用自己安装的jdk路径

按照dll里的目录顺序新建目录及类

声明跟dll里一样的方法,方法前加native关键字(注意参数类型)

代码静态块里写(不要后缀):

static {

System.loadLibrary("testDll");

}

之后写main方法就可以调用了。如有报错,注意观察报错信息,可能会缺少依赖dll文件

简单封装JNI

简单封装一个调用dll的类

代码可以在资源共享,我的代码中下载

调用代码(主要是static块代码变了),DllUtil这块代码在共享里下载

static {

try {

DllUtil.extractFromJar("testDll.dll", "testDll.dll", System

.getProperty("java.io.tmpdir"));

System.load(System.getProperty("java.io.tmpdir") + "\\testDll.dll");

System.out.println("load testDll.dll success!!");

} catch (Exception e) {

System.out.println("testDll.dll error:" + e.getMessage());

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Node.js是一个使用JavaScript编写的服务器端应用程序环境,它使用事件驱动、非阻塞I/O模型,使得它非常适合在高并发场景下运行。在一些场景下,我们需要将Node.js与一些C/C++语言开发的库进行交互,这时我们可以通过node-ffi或者node-ffi-napi这样的扩展来实现。这些扩展可以让我们在Node.js中加载动态链接库(DLL),并且调用DLL中的函数。 Node.js中加载DLL的方式和C/C++中一样,需要通过动态链接库的名称来加载对应的DLL文件。一般来说,我们可以在Node.js中使用node-ffi模块来完成动态链接库的加载和函数的调用。 node-ffi提供了一个简单而直接地API,允许我们从JavaScript代码中调用动态链接库函数。要使用node-ffi,我们需要做以下几步: 1. 安装node-ffi:在命令行中运行npm install ffi --save命令。 2. 加载DLL文件:使用ffi.Library方法来加载DLL文件。 3. 定义函数类型:使用ffi.Function和ffi.Callback方法来定义函数类型。 4. 调用DLL函数:使用ffi.Library对象中的函数名来调用DLL函数。 下面是一个使用node-ffi模块加载DLL文件并调用DLL函数的示例: ``` const ffi = require('ffi'); // 加载DLL文件 const win32 = ffi.Library('kernel32', { 'GetLastError': [ 'int32', [] ] }); // 调用DLL函数,返回错误码 console.log(win32.GetLastError()); ``` 在这个示例中,我们使用ffi.Library方法加载了kernel32.dll文件,然后使用GetLastError函数名来调用DLL函数。注意:在不同的操作系统环境中DLL文件名称和函数名可能有所不同。 总的来说,Node.js通过node-ffi和node-ffi-napi这些扩展提供了一种简单、快捷的方式来将JavaScript代码与C/C++语言开发的库进行交互。使用这些扩展,我们可以轻松地在Node.js中加载DLL文件,调用DLL函数,实现更为复杂的应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈文贞

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值