文档章节

JNA调用DLL函数遇到的几个问题

雷霄骅
 雷霄骅
发布于 2013/09/30 16:49
字数 410
阅读 136
收藏 1

最近一个JSP项目需要用到分词模块,而分词模块实用C++写成的DLL库。于是上网搜各种方法,最后选择了JNA作为JSP调用DLL的工具。

JNA(Java Native Access )提供一组Java工具类用于在运行期动态访问系统本地库(native library:如Window的dll)而不需要编写任何Native/JNI代码。开发人员只要在一个java接口中描述目标native library的函数与结构,JNA将自动实现Java接口到native function的映射。

JNA的使用方法有很多,这里只总结下我遇到的问题:

DLL放置的路径问题

JSP本身分为bean的src目录和WebRoot的脚本目录,而我们的DLL需要在src下的类中调用,于是遇到了将DLL和资源文件放置到什么地方的问题。

最后解决方法:将调用的DLL和LIB文件拷贝到C:/Windows/System32目录下可以访问。

解决过程:我试过将这些文件放到Src目录下,然后用Class.class.getResource("/").getPath()这种方法得到类的class路径,再得到资源文件的路径,结果没有成功。

DLL调用资源的路径问题

DLL可能会调用其他资源文件,比如我这里需要用到词典,路径也是个问题,不过这个较为简单,很容易解决:

将资源文件目录,拷贝到Src目录下面。在程序中使用Class.class.getResource("/").getPath()获得编译后的类所在的根目录,再连接上资源文件即可。

本文转载自:http://www.crazyant.net/2012/12/26/jsp使用jna调用dll函数遇到的几个问题/

共有 人打赏支持
雷霄骅
粉丝 195
博文 419
码字总数 2129
作品 4
朝阳
程序员
JNA, Java Native开发利器

下面的文章由转载而来,java与c++的调用基本思路是这样子,但是结合我的使用经验,在使用jna和jnative的时候需要考虑到jdk的版本,jnative跟jdk1.4的结合可能会有点问题,因为我之前选的是j...

彭苏云
2013/04/16
0
4
java jna 调用dll 一些问题 谢谢

最近在开发关联硬件的java程序, 遇到问题: java jna调用dll方法 但是dll方法里面传的不是基本数据类型,是类似封装对象的那种 jna可以实现调用dll方法传基本数据类型,但是不知道怎么传封装...

简简单单977
2017/09/12
31
1
JNA工作笔记一

JNA是什么? JNA(Java Native Access )提供一组Java工具类用于在运行期动态访问系统本地库(native library:如Window的dll)而不需要编写任何Native/JNI代码。开发人员只要在一个java接口...

吕兵阳
2015/12/18
685
0
JNA调用DLL,JNative函数回调

我手头上现在有一个DLL,在DLL 中有一个函数:GoSdkVersion@0 ,JNA中使用什么协议可以调用 stdcall会使导出函数名字前面加一个下划线,后面加一个@再加上参数的字节数, 比如MyFunction@4的参...

zj507071
2016/05/20
670
1
用proguard混淆后 jna调用dll报错 java.lang.UnsatisfiedLinkError: Error looking up function 'b': ???????¨?

遇到一个麻烦 用proguard混淆后 jna调用dll报错,没混淆之前是正常的,所有jar包都是添加好了的 报的是 Error looking up function 'b'google了很久没找到答案 多数说dll没有这个方法,但是肯...

本人纯属虚构
2013/09/28
3.5K
4

没有更多内容

加载失败,请刷新页面

加载更多

java序列化(四) - 实现Externalnalizable接口

实现Externalnalizable接口 实现Externalnalizable接口 package meng.springboot.demo.obj;import java.io.Externalizable;import java.io.IOException;import java.io.ObjectInput......

晨猫
7分钟前
0
0
php 日志库获取调用方的代码文件地址和代码行数

在使用其他语言的打印日志的时候,经常能看到打印日志时带上文件地址和代码行数,对于调试和查找问题非常方便,但是 php 日志库里则很少见到这个功能,但这个功能还是可以实现的。 关键点就是...

anoty
13分钟前
3
0
Android Studio如何批量导入全部包import

当需要导包时,Android Studio有单个导包快捷键 Alt+Enter 但是没有全部的包 但是可以在设置里设置Auto Import自动导入功能

lanyu96
14分钟前
0
0
六款优秀的 Linux 基准测试工具

基准测试是指运行计算机程序去评估硬件和软件性能的行为。硬件基本测试包括评估处理器,内存,显卡,硬盘,网络等不同组件的性能。基准测试有两类: 复合和应用。复合基准对一个硬件执行压力...

openthings
17分钟前
0
0
什么是阿里云容器服务?

关于阿里云容器服务的详细内容:阿里云容器服务使用教程 容器服务(Container Service)提供高性能可伸缩的容器应用管理服务,支持用 Docker 容器进行应用生命周期管理,提供多种应用发布方式...

mcy0425
18分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部