我现在打算自己写代码读取考勤机数据,打算用java调用dll。现在给出的原型是:Connect_Net
【函数定义】
VARIANT_BOOL Connect_Net( [in] BSTR IPAdd, [in] long Portl)
【功能】
通过IP地址连接机器,和机器建立一个网络连接
【参数】
IPAdd:
机器的IP地址。
Port:
连接机器时使用的端口号,默认为4370.
【返回值】
连接成功返回True,否则返回False
【相关函数】
Disconnect、Connect_Com
我现在写的java代码是:public class test {
public native boolean Connect_Net(String x,int y);
static{
System.loadLibrary("zkemkeeper");
}
public static void main(String[] args)
{
System.out.println(new test().Connect_Net("192.168.0.10",4370));
}}他给了我一堆的dll,没有说这个方法在那个dll中,只是说要注册zkemkeeper.dll,所以我估计,这个dll是其他dll的入口。
我下载的是jacob1.7配置估计应该没有问题。
问题1:这个可以用java语句调用不?函数返回值是VARIANT_BOOL,那我在java里面用boolean可以正常否。
2:它没有给出参数类型,是否,我可以任意定义?
3:有哪位高手,可以告诉我怎么进行调用啊?
运行以后的异常信息是:
Exception in thread "main" java.lang.UnsatisfiedLinkError: Connect_Net
at test.Connect_Net(Native Method)
at test.main(test.java:16)
【函数定义】
VARIANT_BOOL Connect_Net( [in] BSTR IPAdd, [in] long Portl)
【功能】
通过IP地址连接机器,和机器建立一个网络连接
【参数】
IPAdd:
机器的IP地址。
Port:
连接机器时使用的端口号,默认为4370.
【返回值】
连接成功返回True,否则返回False
【相关函数】
Disconnect、Connect_Com
我现在写的java代码是:public class test {
public native boolean Connect_Net(String x,int y);
static{
System.loadLibrary("zkemkeeper");
}
public static void main(String[] args)
{
System.out.println(new test().Connect_Net("192.168.0.10",4370));
}}他给了我一堆的dll,没有说这个方法在那个dll中,只是说要注册zkemkeeper.dll,所以我估计,这个dll是其他dll的入口。
我下载的是jacob1.7配置估计应该没有问题。
问题1:这个可以用java语句调用不?函数返回值是VARIANT_BOOL,那我在java里面用boolean可以正常否。
2:它没有给出参数类型,是否,我可以任意定义?
3:有哪位高手,可以告诉我怎么进行调用啊?
运行以后的异常信息是:
Exception in thread "main" java.lang.UnsatisfiedLinkError: Connect_Net
at test.Connect_Net(Native Method)
at test.main(test.java:16)
解决方案 »
- struts2.1.8使用json是报com/opensymphony/xwork2/util/TextUtils
- junit测试
- 用JSP登录后台,然后用IE6.0的后退键,后退到登录页面,用前进键却可以进入后台
- jsp urlrewriter 如何使用?
- 请问在struts的构架下,怎样去强制进入某一个页面执行F5刷新该页面
- JAVA 类的编译和执行问题
- 初学jsp,救急
- Struts高手进来!!
- 问一下google搜索实现的原理。
- 关于从oracle中读出的中文字符串是乱码的问题
- rs.next()为空,求救!谢谢
- 怎么在javascript的按钮点击事件里,向一个div输出jsp里的内容?
VARIANT_BOOL对应的是C的short类型,如果同是32位系统,java也是short对应2:它没有给出参数类型,是否,我可以任意定义?
参数已经给出类型了BSTR相当于字符串,和long,[in]表示是传入不传出参数3:有哪位高手,可以告诉我怎么进行调用啊?
java调用第三方dll,通常的做法是,自己写个第二方dll,用第二方dll去调用第三方dll,因为第二方dll可以定义与java匹配的数据类型的接口,同时内部可以方便定义第三方dll的数据类型的变量,这样,第二方dll把调用的第三方dll的结果转成与java匹配的类型就很方便java调用了,论坛里很多帖子有涉及到这方面的问题,以前回答过很多,因为太久,懒得去搜索了,LZ自己搜索吧。
哥,请问:
1.我是不是要专门研究下两个数据类型的参照表,但据我所知,好像c语言中的数据类型没有VARIANT_BOOL 这个玩意啊,和java差别不大啊,c系列的都该是如此,难道上面那个方法,不是c系列的?!!!
2.我到网上找来很多少的关于java调用dll例子,都是说先写java代码,就是我上面那种,在用c环境写dll,这里是否就是你说的,第二方dll,即对于有现成的dll人来说,仍然要,先写java代码,配置vc环境,编写dll,最后才是调用现成的dll?对吗?
1、首先你明确你需要调用现有dll的哪些方法
2、然后写java声明你需要调用的方法(这里你先不管类型,你按java思路完成方法声明)
3、将你写的java文件生成.h头文件
4、自己编写dll,引入第三步中的.h头文件,并且实现其中的方法,这里实现的话,就是调用另一个现有的dll方法。
5、编译好后将你生成的dll和原来的dll放到system32或者项目或者jdk环境中,ok完成
1.我是不是要专门研究下两个数据类型的参照表,但据我所知,好像c语言中的数据类型没有VARIANT_BOOL 这个玩意啊,和java差别不大啊,c系列的都该是如此,难道上面那个方法,不是c系列的?!!!
VARIANT_BOOL就是short,是COM的类型,C/C++可以用typedef声明
typedef short VARIANT_BOOL;2.我到网上找来很多少的关于java调用dll例子,都是说先写java代码,就是我上面那种,在用c环境写dll,这里是否就是你说的,第二方dll,即对于有现成的dll人来说,仍然要,先写java代码,配置vc环境,编写dll,最后才是调用现成的dll?对吗?
对的,就是先写java,用javah生成头文件,在C/C++端用该头文件写个dll,这就是第二方dll,然后这个第二方dll去调用第三方dll