- 浏览: 7245860 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1546)
- 企业中间件 (236)
- 企业应用面临的问题 (236)
- 小布Oracle学习笔记汇总 (36)
- Spring 开发应用 (54)
- IBatis开发应用 (16)
- Oracle基础学习 (23)
- struts2.0 (41)
- JVM&ClassLoader&GC (16)
- JQuery的开发应用 (17)
- WebService的开发应用 (21)
- Java&Socket (44)
- 开源组件的应用 (254)
- 常用Javascript的开发应用 (28)
- J2EE开发技术指南 (163)
- EJB3开发应用 (11)
- GIS&Mobile&MAP (36)
- SWT-GEF-RCP (52)
- 算法&数据结构 (6)
- Apache开源组件研究 (62)
- Hibernate 学习应用 (57)
- java并发编程 (59)
- MySQL&Mongodb&MS/SQL (15)
- Oracle数据库实验室 (55)
- 搜索引擎的开发应用 (34)
- 软件工程师笔试经典 (14)
- 其他杂项 (10)
- AndroidPn& MQTT&C2DM&推技术 (29)
- ActiveMQ学习和研究 (38)
- Google技术应用开发和API分析 (11)
- flex的学习总结 (59)
- 项目中一点总结 (20)
- java疑惑 java面向对象编程 (28)
- Android 开发学习 (133)
- linux和UNIX的总结 (37)
- Titanium学习总结 (20)
- JQueryMobile学习总结 (34)
- Phonegap学习总结 (32)
- HTML5学习总结 (41)
- JeeCMS研究和理解分析 (9)
最新评论
-
lgh1992314:
[u][i][b][flash=200,200][url][i ...
看看mybatis 源代码 -
尼古拉斯.fwp:
图片根本就不出来好吧。。。。。。
Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传 -
ln94223:
第一个应该用排它网关吧 怎么是并行网关, 并行网关是所有exe ...
工作流Activiti的学习总结(八)Activiti自动执行的应用 -
ZY199266:
获取不到任何消息信息,请问这是什么原因呢?
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息 -
xiaoyao霄:
DestinationSourceMonitor 报错 应该导 ...
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息
在JNA官网上还介绍了另外一种调用C/C++动态库的方式:直接函数(方法)映射。其编程方法非常简单,连接口定义都免了,只需在类声明中使用关键字native声明动态库的函数,然后在调用动态库的函数之前先调用Native.register方法注册(加载)动态库即可。
* 在JNA官网上还介绍了另外一种调用C/C++动态库的方式:直接函数(方法)映射。
* 其编程方法非常简单,连接口定义都免了,只需在类声明中使用关键字native声明动态
* 库的函数,然后在调用动态库的函数之前先调用Native.register方法注册(加载)动态库即可。
* 说明:该程序既可以在Windows环境下运行也可以在Linux环境下运行。如果是在Windows下,将加载msvcrt.dll动态库;如果是在Linux下,将加载libm.so动态库。
linux和unix的libm.so在/lib/libm.so
在Platform中的代码如下常量:
C_LIBRARY_NAME = osType == WINDOWS ? "msvcrt" : osType == WINDOWSCE ? "coredll" : "c";
MATH_LIBRARY_NAME = osType == WINDOWS ? "msvcrt" : osType == WINDOWSCE ? "coredll" : "m";
package com.etrip.jna.win; import com.sun.jna.IntegerType; import com.sun.jna.Library; import com.sun.jna.Native; import com.sun.jna.Platform; import com.sun.jna.Pointer; /** * * @Title: TODO * @Description: 实现TODO * @Copyright:Copyright (c) 2011 * @Company: * @Date:2012-12-22 * @author longgangbai * @version 1.0 */ public class CDirectJNA { static class CLibrary { public static class size_t extends IntegerType { public size_t() { super(Native.POINTER_SIZE); } public size_t(long value) { super(Native.POINTER_SIZE, value); } } public static native Pointer memset(Pointer p, int v, size_t len); public static native Pointer memset(Pointer p, int v, int len); public static native Pointer memset(Pointer p, int v, long len); public static native long memset(long p, int v, long len); public static native int memset(int p, int v, int len); public static native int strlen(String s1); public static native int strlen(Pointer p); public static native int strlen(byte[] b); static { Native.register(Platform.C_LIBRARY_NAME); } } static interface CInterface extends Library { CInterface instance = (CInterface) Native.loadLibrary( Platform.C_LIBRARY_NAME, CInterface.class); Pointer memset(Pointer p, int v, int len); int strlen(String s); } public static void main(String[] args) { String str="longgangbai"; System.out.println(CLibrary.strlen(str) +" "+CInterface.instance.strlen(str)); } }
package com.etrip.jna.win; import com.sun.jna.Library; import com.sun.jna.Native; import com.sun.jna.Platform; /** * @Title: TODO * @Description: 实现TODO * @Copyright:Copyright (c) 2011 * @Date:2012-12-22 * @author * @version 1.0 */ public class MathDirectJNA { /** *通过注册的方式操作cos */ static class MathLibrary { public static native double cos(double x); static { Native.register(Platform.MATH_LIBRARY_NAME); } } /** * 通过jni方式访问操作cos */ private static class JNI { static { System.load(Platform.MATH_LIBRARY_NAME); } private static native double cos(double x); } /** *通过加载的方式操作cos */ interface MathInterfaceLibrary extends Library { MathInterfaceLibrary instance = (MathInterfaceLibrary) Native.loadLibrary( Platform.MATH_LIBRARY_NAME, MathInterfaceLibrary.class); double cos(double x); } public static void main(String[] args) { System.out.println(MathLibrary.cos(0.6)+" "+MathInterfaceLibrary.instance.cos(0.6)); } }
【参考链接】:
https://github.com/twall/jna/blob/master/www/DirectMapping.md
下面给出一个调用本地数学函数库的示例,该示例中分别调用了动态库中的cos、sin和pow进行数学计算。
发表评论
-
【转】Django resources
2014-01-23 14:35 10713Django resources This page li ... -
使用国内镜像源来加速python pypi包的安装
2014-01-16 11:16 197547pipy国内镜像目前有: http://pypi.d ... -
[转 ]vagrant使用简介
2014-01-10 13:53 256071> 简介: vagrant提供了易于配置,重复性 ... -
[转]在Java中调用Python
2014-01-07 13:08 9135在执行之前都需要把jython对应的包加载进去,这个是必须的 ... -
[转]Eclipse配置PyDev插件
2014-01-02 14:25 2775安装python解释器 安装PyDev: 首 ... -
RestFuse的研究(五) Http请求的封装
2014-06-14 15:50 3507在RestFuse中封装了Http请 ... -
RestFuse的研究(四) Junit的Statement的分析
2013-12-06 11:46 1600在RestFuse提供了多种单 ... -
RestFuse的研究(三) Junit的Rule的使用和分析
2013-12-06 11:01 2186在junit中定义一些可以公用的规则(R ... -
RestFuse的研究(二) Junit的Runner的分类和模式
2013-12-06 10:40 1549在Junit4中的调用JunitCore可以采 ... -
RestFuse的研究(一) HttpJunitRunner的实现
2013-12-06 10:11 1688在RestFuse是一种针对Rest We ... -
[转]An open-source JUnit extension to test HTTP/REST APIs
2013-12-06 09:57 1049http://developer.eclipsesource ... -
TestNG简单的学习(十三)TestNG中Junit的实现
2013-12-04 09:00 3283TestNG和junit的整合 ... -
TestNG简单的学习(十二)TestNG运行
2013-12-03 09:08 51436文档来自官方地址: ... -
TestNG简单的学习(十一)TestNG学习总结
2013-12-03 09:08 13990最近一直在学习关于TestNG方面的知识,根 ... -
TestNG简单的学习(十)TestNG @Listeners 的使用
2013-12-03 09:07 8618TestNG官方网站: http://testng.or ... -
TestNG简单的学习(九)TestNG Method Interceptors 的使用
2013-12-03 09:07 2647TestNG官方网站: http://testng ... -
TestNG简单的学习(八)TestNG Annotation Transformers 的使用
2013-12-03 09:07 2753TestNG官方网站: http://testng.or ... -
TestNG简单的学习(七)TestNG编程方式运行
2013-12-02 09:22 2395TestNG官方网站: http://testng.or ... -
TestNG简单的学习(六)测试工厂注释的使用
2013-12-02 09:22 2709TestNG官方网站: http://testng.or ... -
TestNG简单的学习(五)参数化测试数据的定制
2013-12-02 09:22 2637TestNG官方网站: http://testng.or ...
相关推荐
jna 实现回调函数 code.zip jna 实现回调函数 code.zip jna 实现回调函数 code.zip jna 实现回调函数 code.zip jna 实现回调函数 code.zip jna 实现回调函数 code.zip jna 实现回调函数 code.zip
JNA 回调函数工作不稳定现象处理 (绝大多数回调不稳定的原因)
java调用dll所需要的两个jar jna-3.5.1.jar和platform-3.5.1.jar 以及JNA操作文档,函数映射等等
JNA(Java Native Access )提供一组Java工具类用于在运行期动态访问系统本地库(native library...开发人员只要在一个java接口中描述目标native library的函数与结构,JNA将自动实现Java接口到native function的映射。
JNA方式,JAVA调用C函数,并且C函数可以回调执行JAVA函数
JNA调用DLL函数.rar 用VC6写了一个加减功能的动态库,供JAVA调用
jna调用C语言函数库dll、so jni介绍
jna-4.5.1 , jna-4.5.1-sources , jna-platform-4.5.1 jar包 JNA全称Java Native Access,是一个...开发人员只要在一个java接口中描述目标native library的函数与结构,JNA将自动实现Java接口到native function的映射。
在Linux系统下,JAVA程序通过JNA技术实现调用C语言编程输出的so库接口函数,从而实现java程序与c程序之间的交互。
本文原名《使用JNA方便地调用原生函数》发表于2009年3月的“程序员”杂志上。感谢程序员杂志的许可,使这篇文章能够成为免费的电子版,发布于网络上。 程序员杂志发表此文时,略有裁剪,因此本文比程序员上的文章...
java通过jna调用c返回结构体例子,就是解决c语言返回结构体,java用类对象接收,包含jar包,java文件,c文件,操作步骤文档,在linux下完美通过
JNA调用VC++dll;boolean,String,int,loog,结构体指针,VC++通过回调函数调用java函数
开发人员只要在一个java接口中描述目标native library的函数与结构,JNA将自动实现Java接口到native function的映射,大大降低了Java调用本体共享库的开发难度。JNA与.NET平台上的P/Invoke机制一样简单和方便。
开发人员只要在一个java接口中描述目标native library的函数与结构,JNA将自动实现Java接口到native function的映射。 JNA3.09API参考手册.chm 是我制作的JNA类库3.09版的Java API参考手册。方便查找。 JNA是最新的...
亲测可用,java 成功调用dll函数。包含调用回调函数,springboot版本。最近由于公司业务需要,要调用dll文件,用JNA调用。
深入浅出JNA—快速调用原生函数 和许多解释执行的语言一样,Java提供了调用原生函数的机制,以加强Java平台的能力。Java™ Native Interface (JNI)就是Java调用原生函数的机制。 事实上,很多Java核心代码内部就是...
JNA允许使用JAVA方法调用方式来直接调用本地函数.它提供了一个动态的C语言编写的转发器,自动实现JAVA类型和C类型的映射. JNA使用一个小型本地库存根来动态调用本地代码.开发者需要定义一个JAVA接口来描述本地库存的...
JNA使Java调用原生函数就像.NET上的P/Invoke一样方便、快捷。 JNA的功能和P/Invoke类似,但编写方法与P/Invoke截然不同。JNA没有使用Annotation, 而是通过编写一般的Java代码来实现。 P/Invoke是.NET平台的机制。而...
开发人员只要在一个java接口中描述目标native library的函数与结构,JNA将自动实现Java接口到native function的映射。 优点 JNA可以让你像调用一般java方法一样直接调用本地方法。就和直接执行本地方法差不多,而且...
经过几天的奋战,终于让我搞懂了JNA的解析以及指针在结构体中的应用!!!下了很多的资料,里面包含c++的.h头文件,给需要帮助的人看看!! 里面包含代码以及解析过程。