Chinaunix

标题: 请问各位JNI如何调用已经存在的DLL库中的函数 [打印本页]

作者: woyaoxuexi    时间: 2004-07-05 10:25
标题: 请问各位JNI如何调用已经存在的DLL库中的函数
我看过很多源码,都是用JNI生成头文件,根据头文件编写CPP之后编译成DLL文件,可是我的要求是用已经存在的DLL文件中的函数,请各位帮帮忙。谢谢了,很着急啊
作者: sakulagi    时间: 2004-07-05 11:20
标题: 请问各位JNI如何调用已经存在的DLL库中的函数
  1. 根据头文件编写CPP
复制代码
在这一步里你可以在你的CPP文件里写任何代码,包括dlopen,当然就可以调用其他的dll文件里的函数了。
作者: woyaoxuexi    时间: 2004-07-05 12:01
标题: 请问各位JNI如何调用已经存在的DLL库中的函数
什么意思啊?不懂,详细些谢谢
作者: sakulagi    时间: 2004-07-05 12:47
标题: 请问各位JNI如何调用已经存在的DLL库中的函数
一个c++的程序可以调用一个dll,这个明白吧?
作者: woyaoxuexi    时间: 2004-07-05 14:16
标题: 请问各位JNI如何调用已经存在的DLL库中的函数
不懂,大家都来讨论一下吧
作者: 猫小    时间: 2004-07-05 14:22
标题: 请问各位JNI如何调用已经存在的DLL库中的函数
DLL 的 Java 支持是这样的:
Java 能够通过使用 JNI 接口调用 DLL 中的函数。要允许与 Java 一起使用 DLL,需要在类文件中设置用于 DLL 的 Java 可调用函数。首要任务是为每个函数创建一个 Java 类。

这里有一个例子,希望可以帮助理解
http://www.programfan.com/showarticle.asp?id=1660
作者: woyaoxuexi    时间: 2004-07-05 14:35
标题: 请问各位JNI如何调用已经存在的DLL库中的函数
可是我要使用软件商提供得dll库,而不是自己生成dll库啊!请问怎么办呢?
作者: sakulagi    时间: 2004-07-05 20:12
标题: 请问各位JNI如何调用已经存在的DLL库中的函数
[quote]原帖由 "woyaoxuexi"]不懂,大家都来讨论一下吧[/quote 发表:
c++调用一个dll很容易啊

MS Windows:  LoadLibrary()和FreeLibrary
(你可以查一下MSDN)
Linux: dlopen()
作者: a__mao    时间: 2004-12-21 13:00
标题: 请问各位JNI如何调用已经存在的DLL库中的函数
楼主的问题在《thinking in JAVA》里就有答案啊,解决方案是自己编写一个符合JNI规则的DLL,在此DLL中封装原有DLL的输出函数,也就是说JAVA的调用过程是:JAVA ==调用==>; 自编DLL ==调用==>; 原有DLL,由此可达到楼主的目的。
作者: sakulagi    时间: 2004-12-21 14:17
标题: 请问各位JNI如何调用已经存在的DLL库中的函数
楼上解释的比较清楚
作者: locean    时间: 2007-11-21 16:11
原帖由 a__mao 于 2004-12-21 13:00 发表
楼主的问题在《thinking in JAVA》里就有答案啊,解决方案是自己编写一个符合JNI规则的DLL,在此DLL中封装原有DLL的输出函数,也就是说JAVA的调用过程是:JAVA ==调用==>; 自编DLL ==调用==>; 原有DLL,由此可达 ...



解释很清楚,是这样的!

建win32 dll,添加*。cpp。导入你的头文件和库文件!然后在函数体添加函数体即可,注意参数转换!
作者: weimaojun    时间: 2007-12-26 10:36
先将厂商提供的DLL用vc/c++封装一次,然后再用JAVA调用就可以了
作者: jinijxta    时间: 2007-12-26 21:11
jna: Java Native Access (JNA): Pure Java access to native libraries,用于访问本机的DLL用的,没认真研究过,据说还不错.
https://jna.dev.java.net
作者: fecasmoy123    时间: 2008-01-01 23:21
很琐碎的过程,
建议你先看看JNI命名规范,在看看对应的例子,




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2