《java调用C++库文件dll的详细方法》.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《java调用C++库文件dll的详细方法》.doc

使用java的jni方式调用C++封装的库文件 作者:徐进,吴文琪 网上很多相关的文章都不够细,希望这个文档对需要的同行有帮助。我也是新手,如果有错,请多多见谅! 徐进:qq :891538237 这里使用的是java的jni方式调用C++编写的dll库文件。 前段时间公司领导要求用java调用C++编写的文件,文件中封装了几十种协议的接口(这些是以前同事用C++编写好的并且是正确的,因为协议多,如果用java重新编写费时费力还不一定正确,所以领导决定用java调用dll文件的方式实现),每一种接口只要传进去响应的参数就能够返回相应的报文字符串。在网上查阅了很多资料,大部分都不够细,有的还带有明显的错误,我研究这项技术近3天的时间,在查阅资料还有同事(负责c++封转成dll库文件的)的帮助下终于完成调用的任务。 下面我具体介绍一下我实现的方式: 首先要做的就是配置环境变量 1.1 安装jdk:这个是我安装的jdk版本,虽然我没有测试其他的版本,但是我建议安装jdk1.5及以上的版本 安装的路径可以自己定义,如果不会就默认不要动,我用的是默认的路径: 安装完成之后的效果如下:C:\Program Files\Java 配置环境变量 我用的是win7系统,所以win7的操作来说的。 在电脑桌面的“计算机”图标上右击一下效果如下: 然后左键点击一下选中属性弹出如下: 然后左边有个“高级系统设置”,左键点击它一下弹出如下: 左键点击环境变量按钮,弹出如下: 点击下面的一个新建按钮,弹出如下: 输入变量值和对应的变量值,点击确定就可以了。下面是按照我的jdk路径配置的变量: 上面的classpath和path的变量值没有显示完,前面还有c: 为了检验环境变量的配置是否正确,打开运行: 开始菜单 == 点击运行 == 输入cmd后点击回车键 == 如下: 输入java –version 注意:java和 – 之间有一个空格,- 和version之间没有空格。 如果配置正确会弹出如下: 我们还可以建立一个java类来打印结果:如下所示: 这是运行结果的一部分:可以看到这里出现了刚才配置的路径 到这里就说明配置已经成功完成了! 2.编写c++封装的dll库文件的映射类。 环境配置好之后,就可以编写java的映射类了。先看我写的映射类: 页面大小有限,只能复制部分了,见谅。 Static{ System.loadLibrary(“ProtocolDll”); } 这句话的作用就是加载库文件,小括号里面的字符串就是库文件的名字。 其余的就是对应c++里面的方法映射,这些映射方法不需要实现,而且都需有native 修饰。 至于方法里面的参数类型,c++的类型和java的类型不一致,但是很容易看出类对应的类型。 这个我不多说,需要两个人配合,一个会c++的,一个会java的。 3.生成.h头文件。 我们需要这个映射类的class文件类生成.h头文件。如果你的工程是java工程,那么在dos命令中cd到你的工程中的bin中所需类所在的目录,然后执行:javah –classpath . –jni 包名.类名(详细语法:javah空格–classpath空格.空格–jni空格包名.类名),然后在bin目录同级或者bin目录中寻找.h扩展名的头文件,这个就是生成的头文件。具体位置我忘掉了。 下面我演示我的头文件生成: 我的工程师java web工程,没有bin目录,但是在C:\Users\Administrator\Workspaces\MyEclipse 8.5\sjhj\WebRoot\WEB-INF\classes\com\sybuild\sdxt\order\entity 能找到我所建的映射类对应的class文件。 如下所示: 我建的映射类是ProtocolInterface.java,将上面对应的ProtocolInterface.class文件复制到它的类文件所在的目录,如下: 然后打开运行,输入cmd然后回车如下: 输入cd/回退到c目录的根目录中如下: 然后cd到工程下的src目录下:如下: 然后按照javah –classpath . –jni 包名.类名 的的语法javah空格–classpath空格.空格–jni空格包名.类名执行语句如下:一定要注意空格: 第一个执行的语句是我在word上面复制来的,报错了,下面是自己输入的,内容一样,什么都没有返回说明成功了。按照语法包名是com.sybuild.sdxt.order.entity,类名(确切的说应该是类文件名,也就是.class文件)是ProtocolInterface,这里不能加.class 接下来就是寻找那个宝贝文件了: 下面是映

文档评论(0)

wgvi + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档