- 浏览: 366180 次
- 性别:
- 来自: 长沙
文章分类
- 全部博客 (186)
- J2EE (46)
- spring (4)
- Applet (7)
- 网页前端 (10)
- 生活与工作 (55)
- 开放的世界 (10)
- linux (16)
- j2me (2)
- android (5)
- ExtJS (1)
- 架构师与设计 (7)
- 开发平台 (2)
- Eclipse (4)
- 教育 (0)
- 数据库 (9)
- English (1)
- Jetty (2)
- 未分类 (1)
- 工具 (2)
- flex (2)
- synchronized (1)
- maven (2)
- command (0)
- shell (1)
- web (1)
- qq (3)
- wine (3)
- chrome (1)
- extensions (1)
- plugin (1)
- 插件 (1)
- ssh (1)
- 内网 (1)
- J2EE excel (1)
- ubuntu (4)
- storm (2)
- hadoop (1)
最新评论
-
skzr.org:
jdbc:mysql://localhost:3306/?us ...
storm topology all in one spring文件合并 -
chenghong726:
你好,我用你这个方法,上传文件72M一直卡在 mapper.s ...
超大excel读取 43万记录 26M文件 -
海hai:
您好我对这篇文章很敢兴趣可以和你请教下吗?我qq9034418 ...
淘宝top自动授权页面,方便大家调试top应用 -
skzr.org:
首先感谢你的关注:)yaerfeng1989 写道最代码上有更 ...
[MAVEN]web工程的调试 -
skzr.org:
最新消息2013-12-17:腾讯再次弹出消息,我的QQ201 ...
ubuntu 12.04安装QQ2012
此文档陆续记录JNA的使用经验!
会根据实际操作陆续更新
- 带有返回值的字符串形参
-
int lib_ver(unsinged char *buff); 功 能:读取软件版本号 参 数:buff:存放版本号的缓冲区,长度18字节(包括结束字符’\0’)。 返 回:成功则返回 0 例:unsigned char buff[18]; lib_ver(buff); printf(“software version is %s”,buff);
- JNA JAVA对应方法: int lib_ver(byte[] buf);
-
Java调用方式:
public synchronized String version() throws RuntimeException { byte[] buf = new byte[18]; machine.lib_ver(buf); return Native.toString(buf); }
-
参考资料:官方解答How to return a out String paramter in the JNA?
How do I read back a function's string result? Suppose you have a function: // Returns the number of characters written to the buffer int getString(char* buffer, int bufsize); The native code is expecting a fixed-size buffer, which it will fill in with the requested data. A Java String is not appropriate here, since Strings are immutable. Nor is a Java StringBuffer, since the native code only fills the buffer and does not change its size. The appropriate argument type would be either byte[], Memory, or an NIO Buffer, with the size of the object passed as the second argument. The method Native.toString(byte[]) may then be used to convert the array of byte into a Java String.
-
字符串转换指定编码,解决乱码问题:Native.toString(buf, "GBK")
-
评论
10 楼
skzr.org
2013-08-14
lilyman 写道
在VB中 这个方法的调用方式:
Public Declare Function DR4442Card_ReadType Lib "DR_Soft.dll" (ByRef CType As Integer) As Integer
我在JAVA中 接口的声明:
public int DR4442Card_ReadType(int ctype);
我方法的具体使用:
int ctype = 0;
err = drsoft.DR4442Card_ReadType(ctype);
System.out.prinln(ctype);
控制台输出0......... - -|||
Public Declare Function DR4442Card_ReadType Lib "DR_Soft.dll" (ByRef CType As Integer) As Integer
我在JAVA中 接口的声明:
public int DR4442Card_ReadType(int ctype);
我方法的具体使用:
int ctype = 0;
err = drsoft.DR4442Card_ReadType(ctype);
System.out.prinln(ctype);
控制台输出0......... - -|||
能够输出就说明正确了吧,一般非0才是失败的。
9 楼
lilyman
2013-08-14
在VB中 这个方法的调用方式:
Public Declare Function DR4442Card_ReadType Lib "DR_Soft.dll" (ByRef CType As Integer) As Integer
我在JAVA中 接口的声明:
public int DR4442Card_ReadType(int ctype);
我方法的具体使用:
int ctype = 0;
err = drsoft.DR4442Card_ReadType(ctype);
System.out.prinln(ctype);
控制台输出0......... - -|||
Public Declare Function DR4442Card_ReadType Lib "DR_Soft.dll" (ByRef CType As Integer) As Integer
我在JAVA中 接口的声明:
public int DR4442Card_ReadType(int ctype);
我方法的具体使用:
int ctype = 0;
err = drsoft.DR4442Card_ReadType(ctype);
System.out.prinln(ctype);
控制台输出0......... - -|||
8 楼
lilyman
2013-08-14
skzr.org 写道
详见:http://skzr-org.iteye.com/blog/763438
我写的一个开发一个dll,然后编写对应的java,然后怎样调试。
jna并不能完全正确处理某些东西,这个时候需要自己绕过。
真心是不太明白 看了之后
我想知道怎么能成功获得type的返回值
虽然知道有点复杂
我用了你当前页面的byte[] 数组的方法
可是不好用返回了一个错乱的字符 并不是编码问题
嗯 DLL我自己编辑不了 同时也不太会JNI语法和做法
只能完全依赖JNA 所以才会如此.................
7 楼
skzr.org
2013-08-14
lilyman 写道
skzr.org
我来的时候你不在线 我也有类似的问题求教
在开发的时候很让我头疼
我的项目是链接读卡器然后读卡写卡
其中加载了一个第三方DLL 是一个厂商存储格式的DLL
其中有个方法: err = drsoft.DR4442Card_ReadType(type);
err 是这个方法运行返回的状态标识码 0代表运行正确 int类型
type 是一个卡类型的代码 也是带返回值的参数 int 类型
这个方法运行之后我需要获取int类型的type 我应该怎么写完整的代码
我现在很苦恼 每次运行错误就是JVM崩溃的信息......看见了一定要帮帮我 谢谢啦前辈
我来的时候你不在线 我也有类似的问题求教
在开发的时候很让我头疼
我的项目是链接读卡器然后读卡写卡
其中加载了一个第三方DLL 是一个厂商存储格式的DLL
其中有个方法: err = drsoft.DR4442Card_ReadType(type);
err 是这个方法运行返回的状态标识码 0代表运行正确 int类型
type 是一个卡类型的代码 也是带返回值的参数 int 类型
这个方法运行之后我需要获取int类型的type 我应该怎么写完整的代码
我现在很苦恼 每次运行错误就是JVM崩溃的信息......看见了一定要帮帮我 谢谢啦前辈
详见:http://skzr-org.iteye.com/blog/763438
我写的一个开发一个dll,然后编写对应的java,然后怎样调试。
jna并不能完全正确处理某些东西,这个时候需要自己绕过。
6 楼
lilyman
2013-08-14
skzr.org
我来的时候你不在线 我也有类似的问题求教
在开发的时候很让我头疼
我的项目是链接读卡器然后读卡写卡
其中加载了一个第三方DLL 是一个厂商存储格式的DLL
其中有个方法: err = drsoft.DR4442Card_ReadType(type);
err 是这个方法运行返回的状态标识码 0代表运行正确 int类型
type 是一个卡类型的代码 也是带返回值的参数 int 类型
这个方法运行之后我需要获取int类型的type 我应该怎么写完整的代码
我现在很苦恼 每次运行错误就是JVM崩溃的信息......看见了一定要帮帮我 谢谢啦前辈
我来的时候你不在线 我也有类似的问题求教
在开发的时候很让我头疼
我的项目是链接读卡器然后读卡写卡
其中加载了一个第三方DLL 是一个厂商存储格式的DLL
其中有个方法: err = drsoft.DR4442Card_ReadType(type);
err 是这个方法运行返回的状态标识码 0代表运行正确 int类型
type 是一个卡类型的代码 也是带返回值的参数 int 类型
这个方法运行之后我需要获取int类型的type 我应该怎么写完整的代码
我现在很苦恼 每次运行错误就是JVM崩溃的信息......看见了一定要帮帮我 谢谢啦前辈
5 楼
skzr.org
2011-03-08
skzr.org 写道
今天发现一个新问题
int rf_select(long devHander, unsigned long snr, unsigned char* size);
这个dll函数一直不成功,vc中调试此dll得出,传入的size==0x00000000C就是null所以一直报错
int rf_select(unsigned char* size);可以正常,下载了最新的源码,准备调试dll中
int rf_select(long devHander, unsigned long snr, unsigned char* size);
这个dll函数一直不成功,vc中调试此dll得出,传入的size==0x00000000C就是null所以一直报错
int rf_select(unsigned char* size);可以正常,下载了最新的源码,准备调试dll中
有些bug的,已经提交jna了,具体代码不太记得了
4 楼
skzr.org
2011-03-08
chanball 写道
请问这个支持win64吗?
win64未测试
在windows xp 32bit测试过
在ubuntu 10.10 64bit测试过
3 楼
chanball
2011-03-08
请问这个支持win64吗?
2 楼
skzr.org
2010-09-13
今天发现一个新问题
int rf_select(long devHander, unsigned long snr, unsigned char* size);
这个dll函数一直不成功,vc中调试此dll得出,传入的size==0x00000000C就是null所以一直报错
int rf_select(unsigned char* size);可以正常,下载了最新的源码,准备调试dll中
int rf_select(long devHander, unsigned long snr, unsigned char* size);
这个dll函数一直不成功,vc中调试此dll得出,传入的size==0x00000000C就是null所以一直报错
int rf_select(unsigned char* size);可以正常,下载了最新的源码,准备调试dll中
1 楼
tlg
2010-09-12
:cry: 那个文档看过好几篇,都没有注意那个细节,你解决一个大问题了
发表评论
-
答复: 再谈一个关于final的不一致编译的低级错误
2012-09-25 09:13 1080tlde_ti 写道 我是觉得连依赖管理工具都不用的项目实在 ... -
[MAVEN]web工程的调试
2011-12-18 21:48 4109接上篇:[MAVEN]maven最佳实践 mav ... -
[jetty]jetty学习
2011-12-27 16:19 2544Jetty源码学习 图源码:jetty.dia ... -
[jetty]start.jar启动
2011-12-27 16:16 2751概图 关键点 org.eclipse.jetty ... -
在java中怎样执行系统命令?
2011-12-05 00:12 0linux比较容易实现,windows下问题千奇百怪。 ... -
[MAVEN]maven最佳实践
2011-12-06 11:00 2238参考资料: 官方:http://maven.ap ... -
java点滴
2011-11-25 00:18 0main静态方法调用: 意思的在method ... -
[java]synchronized我的理解
2011-11-18 21:56 1818多线程、同步、锁,搞 ... -
tomcat攻略
2011-07-23 10:51 6885以下是常见的tomcat配置和问题 以下总结来自实践(OS: ... -
[web工程]Struts2+Spring3.1+Hibernate3.6的集成
2011-05-20 00:32 2022背景:如果选择struts2+Spring+Hibernate ... -
[web工程]集成struts2 mvc
2011-05-20 00:30 2167返回:[web工程]Struts2+Spring3 ... -
[web工程]集成hibernate
2011-05-20 00:28 1473返回:[web工程]Struts2+Spring3.1+ ... -
[web工程]创建web工程
2011-05-19 21:30 1966返回:[web工程]Struts2+Spring3.1+Hib ... -
[分享][Hibernate]公用DAO
2011-05-15 23:27 1972通过Hibernate的元信息处理组件等等,利用spring封 ... -
[经验][hibernate][自定义类型]hibernate 3.6.3中自定义类型,json类型
2011-05-14 12:05 1453首先感谢您百忙之中的阅读 :) 下面进入正题 在3. ... -
hibernate和jdbc加载对象性能
2011-05-03 21:49 1986skzr.org 写道 core2 P8400 ... -
java远程调用通讯协议比较
2011-04-12 16:11 1529我的测试: 环境: 使用spring做为粘合剂 ... -
svn经验
2011-03-30 12:55 1431一下内容摘录自自己的wiki,所以链接可能有问题! 目录 ... -
完善包注释[javadoc package-info.java]
2011-03-27 14:03 6475包级注释 说明: 包级注释,有时候是非常有用的,可以清晰的 ... -
Tomcat7新特性?cookie HttpOnly的那些事(sessionid获取麻烦了)
2011-03-26 10:46 13209环境: tomcat6和tomcat7, ...
相关推荐
以下是一个简单的JNA使用示例: ```java import com.sun.jna.Library; import com.sun.jna.Native; import com.sun.jna.Platform; /** * Simple example of JNA interface mapping and usage. */ public class ...
该资源中,包含jna.jar 和一个jna的函数文档。并且有一个完整的使用例子。该例子是访问本地的IC卡读卡器,其中因为原始厂商提供的本地代码函数过于发杂,为了便于JNA调用,又对本地代码...这是一个很好的JNA使用范例。
JNA 使用方法 JNA(Java Native Access)是一种可以让 Java 程序直接调用本地方法的框架,不需要额外的处理或配置,也不需要多余的引用或编码。JNA 框架是 SUN 公司主导开发的,建立在经典的 JNI(Java Native ...
使用JNA,你可以执行以下操作: 1. 调用操作系统API:比如获取系统信息、文件操作、网络通信等。 2. 与本地库交互:例如,使用OpenCV、OpenGL或其他C/C++库。 3. 操作硬件设备:如读写硬件寄存器或控制GPIO引脚。 4....
JNA使用一个配置文件(通常名为`native.lib`),该文件定义了本地库的函数和数据类型。 2. **安装JNA**:要使用JNA,首先需要将其添加为项目的依赖。如果你使用的是Maven,可以在`pom.xml`文件中添加JNA的依赖项。...
Java Native Access(JNA)是Java平台上的一个开源库,它允许Java代码直接调用操作系统提供的原生函数,而无需编写任何C/C++代码或使用JNI(Java Native Interface)。JNA通过提供一种映射机制,将Java方法与本地库...
Java Native Access(JNA)是Java平台上的一个开源库,它允许Java代码直接调用操作系统提供的本地库函数,而无需编写任何C/C++代码或使用JNI(Java Native Interface)。本实例将详细介绍如何使用JNA调用DLL动态链接...
JNA通过映射Java方法到本地函数,实现了Java与操作系统底层功能的交互,极大地简化了在Java应用中使用系统API或DLL库的过程。在这个场景中,我们有两个文件:`jna-3.3.0.jar`和`jna-3.3.0-platform.jar`,它们分别是...
JNA提供了一种无需编写C代码或使用JNI(Java Native Interface)即可调用操作系统API的方法。本话题将详细介绍如何使用JNA获取窗口句柄并发送消息,以及在CS(Client-Server)架构中实现SSO(Single Sign-On)。 ...
内部包含6个文件,其中五个是最新JNA jar包,包括jna-platform-4.1.0.jar、jna-platform-4.2.0.jar、jna-platform-4.2.1.jar、jna-platform-4.2.2.jar,一个是JNA介绍文档,包括在线帮助、入门示例、简单程序示例等...
### 使用JNA替代JNI调用DLL,并解决内存溢出问题 #### 问题背景 在项目的开发过程中,常常遇到需要处理二进制流数据并对其进行解析处理的情况。这种情况下,如果上层应用平台采用的是Java开发,而底层算法或数据...
对于Java开发者来说,正确选择和使用JNA及jna-platform的版本至关重要。选择版本时,需要考虑以下几个因素: - **项目需求**:根据项目需要调用的本机库和API,确认所需的最低支持版本。 - **兼容性**:确保所选版本...
Java源代码部分主要展示了如何使用JNA调用上面定义的C语言函数。关键点如下: 1. **引入依赖库**: ```java import com.sun.jna.Library; import com.sun.jna.Native; import com.sun.jna.NativeLong; import ...
Java Native Access(JNA)是Java平台上的一个开源库,它允许Java代码与本地操作系统功能进行交互,无需编写...通过学习和掌握JNA的使用,开发者可以轻松地将Java应用与各种本地系统服务集成,提升应用的功能性和效率。
本篇文章将详细讲解如何在Android中使用JNA来调用C/C++方法。 首先,了解JNA的基本概念。JNA是一种轻量级的Java库,它允许Java程序直接调用动态链接库(DLL)或共享库(SO)中的函数,无需编写JNI代码。相比之下,...
jna-4.5.1 , jna-4.5.1-sources , jna-platform-4.5.1 jar包 JNA全称Java Native Access,是一个建立在经典的JNI技术之上的Java开源框架(https://github.com/twall/jna)。JNA提供一组Java工具类用于在运行期动态...
"jna" 指的是Java Native Access,而 "jna-example" 暗示了这个话题将涉及JNA的使用示例,这对于初学者或者需要深入理解JNA功能的人来说非常有价值。 **文件列表解析:** 压缩包中唯一的文件 `jna-3.0.9.jar` 应该...
本篇文章将深入探讨如何使用JNA来调用DLL,并提供一个完整的实例。 首先,了解JNA的基本原理至关重要。JNA通过映射Java接口到原生函数来实现与本地代码的交互。这些接口定义了要调用的函数签名,JNA会自动处理参数...
描述中的“JNA相关包”进一步确认了我们的焦点在于JNA的使用和功能。JNA的核心思想是通过一个动态库加载器和服务提供者接口(SPI)来实现Java到本地代码的映射。它使用了一个基于类型映射的简单模型,将Java数据类型...
通过研究源码,开发者可以更好地理解JNA如何处理内存管理、类型转换和错误处理,从而在使用时更加得心应手。 JNA的工作原理是通过动态加载动态链接库(DLL on Windows,.so on Linux,dylib on Mac OS X),并将...