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 ...
随机推荐
- ASP.NET相关技术整理
- http://www.shanghaihaocong.com-WORDPRESS开发的企业主题站
wordpress是世界上使用最多的php开源博客系统,功能强大,而且拥有众多的插件,可扩展性强. 最近,我也用它做了一个企业网站,欢迎浏览:http://www.shanghaihaocong.co ...
- 怎么利用CSS3绘制三角形
最近三角形挺火,很多地方都能碰到,如网页,微信,或者QQ空间的时间轴等地方都能看到,而且这些并不是图片插入进去的,那就需要用CSS来做了 <p class="bbb"> ...
- nginx的rewrite,gzip,反向代理学习笔记
rewrite模块名:ngx_http_rewrite_module默认自动被编译 指令:rewrite regex replacement [flag] regex :正则表达式,用于匹配用户请求的 ...
- LevelDb系列之简介
说起LevelDb也许您不清楚,但是如果作为IT工程师,不知道下面两位大神级别的工程师,那您的领导估计会Hold不住了:Jeff Dean和Sanjay Ghemawat.这两位是Google公司重量 ...
- DIV JS CSS 轻量级弹出层 兼容各浏览器
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- delphi的几个特别关键字 object absolute
1.object关键字相当于C++中的struct, record定义个结构体只能定义数据,而object可以定义方法,默认都是public的. 代码示例如下: TTest = record na ...
- C# 调用系统API 内核 简单样例
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.R ...
- delphi中表示跳出的有break,continue, exit,abort, halt, runerror
1.break 强制退出循环(只能放在循环中),用于从For语句,while语句或repeat语句中强制退出. 2.continue 用于从For语句,while语句或repeat语句强行结束本次 ...
- SublimeText插件Emmet的自定义模板
在前端界,作为快速生成代码的Emmet插件相当给力.最近在学bootstrap,需要频繁生成html头文件,我就想着自定义模板.国内只有基础教程,只好自己读英文文档了. Emmet国内基础教程地址: ...