jna(转自csdn沈东良)

jna(转自csdn沈东良)

ID:9281488

大小:22.56 KB

页数:11页

时间:2018-04-26

jna(转自csdn沈东良)_第1页
jna(转自csdn沈东良)_第2页
jna(转自csdn沈东良)_第3页
jna(转自csdn沈东良)_第4页
jna(转自csdn沈东良)_第5页
资源描述:

《jna(转自csdn沈东良)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、介绍给大家介绍一个最新的访问本机代码的Java框架—JNA。JNA(JavaNativeAccess)框架是一个开源的Java框架,是SUN公司主导开发的,建立在经典的JNI的基础之上的一个框架。JNA项目地址:https://jna.dev.java.net/ 非常强大、易用,功能上类似与.NET的P/Invoke。   不堪回首的JNI我们知道,使用JNI调用.dll/.so共享类库是非常非常麻烦和痛苦的。如果有一个现有的.dll/.so文件,如果使用JNI技术调用,我们首先需要另外使用C语言写一个

2、.dll/.so共享库,使用SUN规定的数据结构替代C语言的数据结构,调用已有的  dll/so中公布的函数。然后再在Java中载入这个适配器dll/so,再编写Java   native函数作为dll中函数的代理。经过2个繁琐的步骤才能在Java中调用本地代码。因此,很少有Java程序员愿意编写调用dll/.so库中的原生函数的java程序。这也使Java语言在客户端上乏善可陈。可以说JNI是Java的一大弱点! .NET平台上强大的P/Invoke而在.NET平台上,强大的P/Invoke技术使我们

3、Java程序员非常羡慕。使用P/Invoke技术,只需要使用编写一个.NET函数,再加上一个声明的标注,就可以直接调用dll中的函数。不需要你再使用C语言编写dll来适配。  不逊于P/Invoke的JNA现在,不需要再羡慕.NET的P/Invoke机制了。JNA把对dll/.so共享库的调用减少到了和P/Invoke相同的程度。 使用JNA,不需要再编写适配用的.dll/.so,只需要在Java中编写一个接口和一些代码,作为.dll/.so的代理,就可以在Java程序中调用dll/so。  JNA快速

4、启动      现在让我们直接进入JNA的世界。 你只需要下载一个jar包,就可以使用JNA的强大功能方便地调用动态链接库中的C函数。1,下载jna.jar。在这里https://jna.dev.java.net/servlets/ProjectDocumentList?folderID=7408&expandFolder=7408&folderID=0  2,现在你已经可以使用JNA了。为了方便你参考JNA的java类库,我制作了《JNA3.09API参考手册》,是CHM格式的。你可以到这里下载htt

5、p://download.csdn.net/source/900438    JNA例子 例子1   现在让我们运行一个JNA程序,感受它的强大威力。1,在Java项目中引入jna.jar包。2,创建一个类: importcom.sun.jna.Library;importcom.sun.jna.Native;importcom.sun.jna.Platform; /**Simpleexampleofnativelibrarydeclarationandusage.*/publicclassHelloW

6、orld{     publicinterfaceCLibraryextendsLibrary{        CLibraryINSTANCE=(CLibrary)            Native.loadLibrary((Platform.isWindows()?"msvcrt":"c"),                               CLibrary.class);           voidprintf(Stringformat,Object...args);    }  

7、   publicstaticvoidmain(String[]args){        CLibrary.INSTANCE.printf("Hello,World/n");        for(inti=0;i

8、序实际上是使用msvcrt.dll这个C运行时库中的printf函数打印出上面这些字符的。     看,多简单,不需要写一行C代码,就可以直接在Java中调用外部动态链接库中的函数! 例子2        上面那个例子使用了操作系统自带的动态链接库,现在我们再自己写一个动态链接库试试。  1,在VS中选择C++语言,然后选择创建一个Win32程序。 选择dll类型。 2,发布的C函数是: #define MYLIBAPI  extern  

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。