我想用java调用c的dll文件,dll文件中有一个是连接到硬件上的接口函数。
但是一直出错,我刚接触JNA对它不是很熟悉,希望知道的大虾帮帮忙。zkemkeeper.dll
里面有函数:VARIANT_BOOL Connect_Com([in] LONG ComPort, [in] LONG MachineNumber, [in]
LONG BaudRate)
VARIANT_BOOL Connect_Net([in] BSTR IPAdd, [in] LONG Port)
public class Zkem {
public interface TestZkem extends Library{
TestZkem INSTANCE=(TestZkem)Native.loadLibrary("zkemkeeper", TestZkem.class);
}
public static void main(String[] args){
Zkem jfczkem = new Zkem(1);
jfczkem.connectCom(1, 1, 115200);
System.out.println("Connect:"+jfczkem.connectNet("192.168.0.201", 4370));
} public native boolean connectCom(int comPort, int machineNumber, int baudRate);
public native boolean connectNet (String ipAddress, int port);
运行报错:Exception in thread "main" java.lang.UnsatisfiedLinkError: com.metaarchit.java.Zkem.connectCom(III)Z
at com.metaarchit.java.Zkem.connectCom(Native Method)
at com.metaarchit.java.Zkem.main(Zkem.java:12)
但是一直出错,我刚接触JNA对它不是很熟悉,希望知道的大虾帮帮忙。zkemkeeper.dll
里面有函数:VARIANT_BOOL Connect_Com([in] LONG ComPort, [in] LONG MachineNumber, [in]
LONG BaudRate)
VARIANT_BOOL Connect_Net([in] BSTR IPAdd, [in] LONG Port)
public class Zkem {
public interface TestZkem extends Library{
TestZkem INSTANCE=(TestZkem)Native.loadLibrary("zkemkeeper", TestZkem.class);
}
public static void main(String[] args){
Zkem jfczkem = new Zkem(1);
jfczkem.connectCom(1, 1, 115200);
System.out.println("Connect:"+jfczkem.connectNet("192.168.0.201", 4370));
} public native boolean connectCom(int comPort, int machineNumber, int baudRate);
public native boolean connectNet (String ipAddress, int port);
运行报错:Exception in thread "main" java.lang.UnsatisfiedLinkError: com.metaarchit.java.Zkem.connectCom(III)Z
at com.metaarchit.java.Zkem.connectCom(Native Method)
at com.metaarchit.java.Zkem.main(Zkem.java:12)
解决方案 »
- JDBC一些常见的错误-注册完却找不到数据
- 关于jstl中字符的转义(在线等待)
- 求助:commons.net通过SMTP发送邮件的问题
- JAVA中如何校验是否本地字符
- 高分求助 STRUTS遍历集合问题. 在线等.
- JDBC的驱动下了怎么放在CLASSPATH里?
- 求救:tomcat5.0配置JDBC的问题
- CMP 又来新问题!
- JB5如何写EJB?VAJ中很方便,什么都自带了,JB5是不是没带EJB包?怎么NEW里面是灰色的?
- jsp 网页登陆页面跳转的安全性
- JNI中 C++调用Jframe时出现问题,求解
- tomcat启动lisenter时报java.lang.NoClassDefFoundError
可以用jna的啊,听说它比jni好用一些,
public interface zkemkeeper extends StdCallLibrary { zkemkeeper INSTANCE = (zkemkeeper) Native.loadLibrary("zkemkeeper",
zkemkeeper.class);boolean Connect_Com(NativeLong ComPort, NativeLong MachineNumber, NativeLong BaudRate);boolean Connect_NetNativeLong IPAdd, NativeLong Port);
}另一个java文件中调用:
static zkemkeeper keep = zkemkeeper.INSTANCE;在此java文件中调用:keep.Connect_Com(...)
确定dll在此项目的目录下或者在system目录下