JNA使用
JNA与C对应的数据类型:


注意:
使用byte[]对应C++中的char* 可以返回函数执行的结果值
一、添加JNA需要的jar包
1、jna.jar
2、platform.jar
二、编写调用DLL的类
package rfid; import com.sun.jna.*;
import com.sun.jna.ptr.*; public interface MasterRD extends Library { MasterRD instance = (MasterRD) Native.loadLibrary("MasterRD",
MasterRD.class); int lib_ver(IntByReference ver); int rf_init_com(int port, NativeLong baud); int rf_beep(short idev, byte msec); int rf_request(short idev, byte model, short[] tagtype); int rf_anticoll(short idev, byte bcnt, byte[] psnr, byte[] prlength); int rf_select(short idev, byte[] psnr, byte srclen, byte[] size); int rf_M1_authentication2(short idev, byte model, byte block, byte[] key); int rf_M1_read(short idev, byte block, byte[] pdata, byte[] plen); int rf_M1_write(short idev, byte block, byte[] data); int rf_light(short idev, byte color); int rf_ClosePort();
}
其中MasterRD为MasterRD.dll 文件名,对应于DLL中的函数如下【部分举例】:
/*
* 提取DLL接口
*/
#ifndef _EXPORT_FUNC_H_
#define _EXPORT_FUNC_H_ #include <Windows.h> int (WINAPI* lib_ver)(unsigned int *nVer); int (WINAPI * des_encrypt)(unsigned char *szOut,unsigned char *szIn , unsigned int inlen,unsigned char *key,unsigned int keylen); int (WINAPI * des_decrypt)(unsigned char *szOut,unsigned char *szIn , unsigned int inlen,unsigned char *key,unsigned int keylen); int (WINAPI * rf_init_com)(int port,long baud); int (WINAPI * rf_init_device_number)(unsigned short icdev); int (WINAPI * rf_get_device_number)(unsigned short *Icdev); int (WINAPI * rf_get_model)(unsigned short icdev,unsigned short *Version); int (WINAPI * rf_get_snr)(unsigned short icdev,unsigned char *Snr); int (WINAPI * rf_beep)(unsigned short icdev,unsigned char msec); #endif
三、使用
MasterRD.instance.lib_ver() ….
JNA使用的更多相关文章
- JNA 如何 加载多个 存在依赖的 DLL 库
JNA 的出现,极大的简化了原有的 JNI 技术.下面是JNA github地址:https://github.com/java-native-access/jna 1. 简单的一个例子: /** S ...
- 使用jna调用dll,jdk位数和dll位数的关系
最近在学习jna,发现dll文件能能否成功调用取决于jdk位数. 32位jdk只能使用32位的dll,64位jdk只能使用64位的dll,否则位数不对应的话报的错是 "Exception i ...
- JNA开发中的问题积累
[Qboy原创] 2013年12月28日 在开发一个项目过程中需要调用第三方的C的dll.由于是第一次在项目中使用JNA,很多都安装开发文档来做,但是出现了很多的问题. 由于很多接口还没调完,还不知道 ...
- JNA参数传递问题,Java数组
版权声明:本文为博主原创文章,未经博主允许不得转载. 本文主要讲述使用JNA模拟结构体并将结构体数组作为参数传递给对应的方法. C语言结构体定义如下: typedef struct Rect { in ...
- JNA结构体参数传递,Java数组
JNA以结构体数组为参数进行调用: ////// C++ // student 结构体定义 typedef struct { int age; char name[20]; }Student; // ...
- java 用JNA方法调用C++动态链接库
JNA(Java Native Access)框架是一个开源的Java框架,是SUN公司主导开发的,建立在经典的JNI的基础之上的一个框架.非常强大.易用,功能上类似与.NET的P/Invoke.你只 ...
- jna 使用实例,
有与项目组需要用到C++的一个模块, 需要将一个2维数组传到dll 里面 ,返回一个字符串, 恶心了1天终于完成了, 记录一下,同时也希望能给你带来帮助. java 代码如下, package tes ...
- JNA—JNI终结者
JNA—JNI终结者 介绍 给大家介绍一个最新的访问本机代码的Java框架—JNA. JNA(Java Native Access)框架是一个开源的Java框架,是SUN公司主导开发的,建立在经典的J ...
- JNA入门实例
JNA(Java Native Access):建立在JNI之上的Java开源框架,SUN主导开发,用来调用C.C++代码,尤其是底层库文件(windows中叫dll文件,linux下是so[shar ...
随机推荐
- C# 中解决页面刷新后字体等变大问题
来源:http://blog.csdn.net/wcsjsdn/article/details/5109605 我们在.net开发中时常会遇到一个问题,那就是,当点击某个按钮后,调用js语句,当点击& ...
- MongoDB(4):多种方式关闭服务命令
http://blog.csdn.net/czw698/article/details/8791153 MongoDB 提供几种关闭服务的命令,具体为以下: 一 使用 Crtl+C 关闭 [mong ...
- sublime几个有用的快捷键
几个有用的快捷键:Ctrl+D:选择多个相同字符串进行修改.选中字符串,按住Ctrl+D,继续选中下一个.Ctrl+Shift+L:将选中的内容切割成多行,然后每一行可以同时编辑Ctrl+J:将已选择 ...
- 14 个折磨人的 JavaScript 面试题
前端工程师有时候面试时会遇到一类面试官,他们问的问题对于语言本身非常较真儿,往往不是候选人可能期待的面向实际的问题(有些候选人强调能干活就行,至于知不知道其中缘由是无关痛痒的).这类题目,虽然没有逻辑 ...
- c#生成随机数示例分享
c#生成(随机数 http://www.jbxue.com/tags/suijishu.html)的代码. /// 构造随机数 种子 ]; System.Security.Cr ...
- Yii中使用PHPexcel获取excel中数据
1.view中代码如下: <form name="frmBatchSettle" id="" action="" method=&qu ...
- 通过messenger实现activity与service的相互通信
布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:to ...
- Oracle 分区表的统计信息实例
ORACLE的统计信息在执行SQL的过程中扮演着非常重要的作用,而且ORACLE在表的各个层次都会有不同的统计信息,通过这些统计信息来描述表的,列的各种各样的统计信息.下面通过一个复合分区表来说明一些 ...
- USB设备---URB请求快
1.urb 结构体USB 请求块(USB request block,urb)是USB 设备驱动中用来描述与USB 设备通信所用的基本载体和核心数据结构,非常类似于网络设备驱动中的sk_buff 结构 ...
- "Programming"和"Programming"是同一个"Programming"吗?
什么意思? C语言没有专门的字符串类型,但是,它同样可以处理字符串.本文不是讨论字符串的使用,而是讨论C字符串之间的关系.如题,在C语言代码中,如果定义#define STR = "Prog ...