因为你装载的库(dll)的路径是lib/CamelTTS,而你的dll放在lib下,当然是不可以的 有以下几种修改方式: 1:把dll放到lib/CamelTTS目录下 2:把SystemloadLibrary("lib/CamelTTS");改成把SystemloadLibrary("lib"); 3:什么也不要改,在运行的时候用命令java -Djavalibrarypath=lib tryTTS
使用jna或jni,但是最好先使用javah命令自己编译头文件,然后去调用
public class A{
static {
SystemloadLibrary("ShowPWD");//DLL名称
}
public static native String display(String in,int i);//这里是动态库中的方法名字
}
要么用jna也可以,我看你上面的方法格式,最好使用jna,要用jni的话比较麻烦呢,要用到dll套dll的做法
具体怎么 *** 作我就不啰嗦,额,百度上多得很,具体怎么做自己查,需要的话,我给你做个例子,HI我
先定义接口,接口中的方法与dll中的对应,然后加载dll文件,接着对应调用其中的方法即可。
例子:
加载dll如下(假设你的dll放在F盘dll目录下,名称为:abcdll):
则:IDllInterfaces INSTANCE = (IDllInterfaces)NativeloadLibrary("F:\\dll\\abc", IDllInterfacesclass);
接着调用方法:
INSTANCEUDP_SetDoorAccountInfoStrSingle();
有问题欢迎提问,,THX!
简单的你会写,那就好办,直接上代码
public interface TestAPI extends StdCallLibrary {interface LoginReply extends StdCallCallback {
/
登录回调
/
void invoke(String userId, long retCode, String retMsg);
}
/
注册一个登录回调方法此方法是dll提供的
/
void RegisterLoginReply(LoginReply loginReply);
}
/
实现登录回调方法
/
private class LoginReplyCallBack implements TestAPILoginReply {
@Override
public void invoke(String userId, long retCode, String retMsg) {
loginfo("登录回调方法:{},{},{}", userId, retCode, retMsg);
}
}
// 设置登录回调
apiRegisterLoginReply(loginReplyCallBack);
以上就是关于请问以下JAVA说明应该怎样 *** 作关于调用dll的.谢谢了,大神帮忙啊全部的内容,包括:请问以下JAVA说明应该怎样 *** 作关于调用dll的.谢谢了,大神帮忙啊、怎么在java中调用dll中的方法、Java调用dll中函数dll文件对方已提供等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)