java调用c++库文件dll的详细方法

java调用c++库文件dll的详细方法

ID:22344263

大小:1.19 MB

页数:14页

时间:2018-10-28

java调用c++库文件dll的详细方法_第1页
java调用c++库文件dll的详细方法_第2页
java调用c++库文件dll的详细方法_第3页
java调用c++库文件dll的详细方法_第4页
java调用c++库文件dll的详细方法_第5页
资源描述:

《java调用c++库文件dll的详细方法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、使用java的jni方式调用C++封装的库文件作者:徐进,吴文琪网上很多相关的文章都不够细,希望这个文档对需要的同行有帮助。我也是新手,如果有错,请多多见谅!徐进:qq:891538237这里使用的是java的jni方式调用C++编写的dll库文件。前段时间公司领导要求用java调用C++编写的文件,文件中封装了几十种协议的接口(这些是以前同事用C++编写好的并且是正确的,因为协议多,如果用java重新编写费时费力还不一定正确,所以领导决定用java调用dll文件的方式实现),每一种接口只要传进去响应的参数就能够返回相应的

2、报文字符串。在网上查阅了很多资料,大部分都不够细,有的还带有明显的错误,我研究这项技术近3天的时间,在查阅资料还有同事(负责c++封转成dll库文件的)的帮助下终于完成调用的任务。下面我具体介绍一下我实现的方式:1.首先要做的就是配置环境变量1.1安装jdk:这个是我安装的jdk版本,虽然我没有测试其他的版本,但是我建议安装jdk1.5及以上的版本安装的路径可以自己定义,如果不会就默认不要动,我用的是默认的路径:安装完成之后的效果如下:C:ProgramFilesJava1.2配置环境变量我用的是win7系统,所以wi

3、n7的操作来说的。在电脑桌面的“计算机”图标上右击一下效果如下:14/14然后左键点击一下选中属性弹出如下:然后左边有个“高级系统设置”,左键点击它一下弹出如下:14/14左键点击环境变量按钮,弹出如下:14/14点击下面的一个新建按钮,弹出如下:输入变量值和对应的变量值,点击确定就可以了。下面是按照我的jdk路径配置的变量:14/14上面的classpath和path的变量值没有显示完,前面还有c:为了检验环境变量的配置是否正确,打开运行:开始菜单==>点击运行==>输入cmd后点击回车键==>如下:输入java–ver

4、sion注意:java和–之间有一个空格,-和version之间没有空格。如果配置正确会弹出如下:我们还可以建立一个java类来打印结果:如下所示:14/14这是运行结果的一部分:可以看到这里出现了刚才配置的路径到这里就说明配置已经成功完成了!2.编写c++封装的dll库文件的映射类。环境配置好之后,就可以编写java的映射类了。先看我写的映射类:14/14页面大小有限,只能复制部分了,见谅。Static{System.loadLibrary(“ProtocolDll”);}这句话的作用就是加载库文件,小括号里面的字符串就

5、是库文件的名字。其余的就是对应c++里面的方法映射,这些映射方法不需要实现,而且都需有native修饰。至于方法里面的参数类型,c++的类型和java的类型不一致,但是很容易看出类对应的类型。这个我不多说,需要两个人配合,一个会c++的,一个会java的。3.生成.h头文件。我们需要这个映射类的class文件类生成.h头文件。14/14如果你的工程是java工程,那么在dos命令中cd到你的工程中的bin中所需类所在的目录,然后执行:javah–classpath.–jni包名.类名(详细语法:javah空格–classp

6、ath空格.空格–jni空格包名.类名),然后在bin目录同级或者bin目录中寻找.h扩展名的头文件,这个就是生成的头文件。具体位置我忘掉了。下面我演示我的头文件生成:我的工程师javaweb工程,没有bin目录,但是在C:UsersAdministratorWorkspacesMyEclipse8.5sjhjWebRootWEB-INFclassescomsybuildsdxtorderentity能找到我所建的映射类对应的class文件。如下所示:我建的映射类是ProtocolInterfac

7、e.java,将上面对应的ProtocolInterface.class文件复制到它的类文件所在的目录,如下:14/14然后打开运行,输入cmd然后回车如下:输入cd/回退到c目录的根目录中如下:然后cd到工程下的src目录下:如下:然后按照javah–classpath.–jni包名.类名的的语法javah空格–classpath空格.空格–jni空格包名.类名执行语句如下:一定要注意空格:14/14第一个执行的语句是我在word上面复制来的,报错了,下面是自己输入的,内容一样,什么都没有返回说明成功了。按照语法包名是c

8、om.sybuild.sdxt.order.entity,类名(确切的说应该是类文件名,也就是.class文件)是ProtocolInterface,这里不能加.class接下来就是寻找那个宝贝文件了:下面是映射类所在位置,映射类的.class文件也在这里。点击左上角的回退按钮,每次点击一下仔细查看有没

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

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

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