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 ...
随机推荐
- Windows2003屏蔽IP
1.打开本地安全策略 2.创建新的IP策略 去掉勾选向导 我们编辑 直接右键指派 指派可以看出来生效...网络已经不通了
- iostat命令简单说说
tps: 每秒钟发送到的I/O请求数. Blk_read /s: 每秒读取的block数 Blk_wrtn/s: 每秒写入的block数 Blk_read: 读入的block总数 Blk_wrtn: ...
- GoLang安装
GoLang的官网被墙,镜像下载地址:http://tip.golang.so/dl/ 或者 http://golang.so/dl/ 安装说明:http://tip.golang.so/doc/i ...
- Ajax异步刷新局部页面的小李子
看到下面那幅图没有,我们要的是当点击确定以后,根据条形码搜索出商品信息,并且异步刷新右边页面:
- 安装pdo.so和pdo_mysql.so还有pcntl.so扩展到php中
1.下载源码,解压tar -xzvf php-5.4.20.tar.gz cd /usr/local/src/php-5.4.20/ext/pdo /usr/local/php/bin/phpize ...
- php对mysql简单读取的实例
读取mysql数据库 例. <?php $link=mysql_connect("localhost","root","之前的管理员密码& ...
- ubuntu 12.04 LTS(64位)安装apache2
在网上找了很多文章,说法不一,不知道应该用哪种方法,后来想就用其中最简单的吧,装不好再卸了重装, 然后就...装上了,用的是tar包源码安装,下面是步骤 1.去官网下载apache2.2.25源码包, ...
- 用delphiXE7 dbExpress Framework提供的功能获取数据表信息
uses + Data.DBXMetaDataNames procedure TMainForm.Button2Click(Sender: TObject);var Cmd: TDBXComman ...
- UART,USART,SPI,I2C等总线的介绍与区别20160526
首先来说一下UART和USART的区别: 1.字面意义: UART:universal asynchronous receiver and transmitter通用异步收发器: USART:univ ...
- jquery.unobtrusive-ajax.js的扩展,做到片段式加载
//ajax支持库 /*! ** Unobtrusive Ajax support library for jQuery ** Copyright (C) Microsoft Corporation. ...