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 ...
随机推荐
- 《第一行代码--Android》阅读笔记之广播
广播接收器 1.注册方式 动态注册:在程序中注册,如在Activity里的onCreate()方法中注册 静态注册:在AndroidManifest.xml中注册 2.可接收哪些广播 接收系统消息 ...
- 模拟新浪微博textarea,刷新页面输入信息保留
今天我们的产品经理提出一个新需求,模拟新浪微博textarea框,输入内容刷新页面保留信息. 我是用的方法是Html5 LocalStorage存储的,开始计划用cookie.或mysql存储,尝试了 ...
- mac 安装lua并配置Subline Text2 的lua开发环境
1 .下载相应的lua安装包 方法 一 Mointain Lion - Lua 5.2.1 Lion - Lua 5.2.1 Snow Leopard - Lua 5.2.1 Lua 将默认安装到 / ...
- IBM开发者 JSON 教程
在异步应用程序中发送和接收信息时,可以选择以纯文本和 XML 作为数据格式.掌握 Ajax 的这一期讨论另一种有用的数据格式 JavaScript Object Notation(JSON),以及如何 ...
- Laravel 5 基础(八)- 模型、控制器、视图基础流程
添加路由 Route::get('artiles', 'ArticlesController@index'); 创建控制器 php artisan make:controller ArticlesCo ...
- C#的编译
Windows上的编译 1:先将C:\Windows\Microsoft.NET\Framework\v3.5配置到系统环境变量的path里. 2:写C#代码 demo1.txt using Syst ...
- 将python2.7+django1.10部署到SAE上
首先我想说的是我为什么选择SAE呢?本人学生一枚,没钱.然后sae好像又有免费的一定限额,所以我就选了它. 期间曲折颇多,实在不是三言两语所能道情的.各种百度,谷歌,最后所幸成功了,幸哉! 主要参考了 ...
- python 内存管理
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 语言的内存管理是语言设计的一个重要方面.它是决定语言性能的重要因素.无论是C语言的 ...
- Collection中的排序
我们来了解一下Collection的框架与接口: Set接口下面已经有SortedSet接口,其中提供了很多自带排序的实现类,例如ThreeSet,用户还能够自定义比较器来规定自己的排序规则. 本篇着 ...
- android开发系列之由ContentValues看到的
这本篇博客里面我想重点来分析一下ContentValues的源码以及它里面涉及到的继承接口Parcelabel,还有HashMap的源码. 相信使用过android里面数据库操作的朋友对于Conten ...