急啊 都来看看 JAVA 如何调用DLL得到其inout 类型的参数 如题就是 JAVA 如何调用DLL得到 inout 类型的参数 值我之前 定义了一个string tmp把他当参数传入到dll最后还是去不到 应该如何调用 谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果是传入将参数转成byte[]后传入若是传出,则用byte[]后转成String即可 就是 先定义个string 然后转成byte[] 然后调用完成后转换成 string ? 我试了试 还是不行啊。 jnative = new JNative("test.dll","GetParam");byte[] valuebyte = paramValue.getBytes();jnative.setParameter(2, Type.STRING,valuebyte);jnative.invoke();上面是调用dll的代码 之后应该怎么做呢 ? 我调用完毕后for(int i = 0 ;i<valuebyte.length;i++){ byte b = valuebyte[i]; System.out.println(b); }还是全是0 private byte[] transName(String name) { byte[] bytes_name = name.getBytes(); for (int i = 0; i < name.length(); i++) { trans[i] = bytes_name[i]; } return trans; }private String transResult(byte[] rets) { StringBuffer retSB = new StringBuffer(); for (int i = 0; i < rets.length; i++) { retSB.append((char) rets[i]); } return retSB.toString(); } 用了以上办法了 还是不行。byte[] transName = this.transName(paramValue); jnative.setParameter(2, Type.STRING,paramValue);jnative.invoke();String transResult = this.transResult(transName);transResult 的值任然是空~ 貌似用的插件不一样 我用的是com.sun.jna.Native; package com.ideal.comm;import java.io.UnsupportedEncodingException;import com.sun.jna.Native;public class Hello { public static void main(String[] args) throws UnsupportedEncodingException { Hello h = new Hello(); h.encrypt("para1", "para2"); } private byte[] transName(String name) { byte[] bytes_name = name.getBytes(); for (int i = 0; i < name.length(); i++) { trans[i] = bytes_name[i]; } return trans; } private String transResult(byte[] rets) { StringBuffer retSB = new StringBuffer(); for (int i = 0; i < rets.length; i++) { retSB.append((char) rets[i]); } return retSB.toString(); } public String encrypt(String name, String password) { String encryption = null; byte[] trans = transName(name); CLib lib = (CLib) Native.loadLibrary("Encryption", CLib.class); int ret = lib.rc4Encrypt(trans, password); encryption=transResult(trans); return encryption; } public String decrypt(String name, String password){ String decrypt = null; byte[] trans = invokeName(name); CLib lib = (CLib) Native.loadLibrary("dll文件名", CLib.class); int ret = lib.rc4Decrypt(trans,password); decrypt=transResult(trans); return decrypt; }} private byte[] transName(String name) { byte[] bytes_name = name.getBytes(); for (int i = 0; i < name.length(); i++) { trans[i] = bytes_name[i]; } return trans; }方法有问题呢 trans 是哪里来的 ? 我现在已经用了jna 了 。。 在尝试。 初学者求JAVA方法名单词 Class类的简单介绍 [求助]java汉字的编码 JAVA阅兵,把你们JAVA的开源项目发上来看看,以供元首检阅 【散分啦】Show Me The Money~~~ HOHO~~~ 急要JAVA面试题目!! 有关线程的问题..请多指教. MAVEN打包压缩JS CSS报错的问题 进来一下吧 为什么,只能显示显示frame,而不能显示图片?在线等待给分!! 求一java基础算法 求指教:eclipse中debug
若是传出,则用byte[]后转成String即可
我试了试 还是不行啊。 jnative = new JNative("test.dll","GetParam");
byte[] valuebyte = paramValue.getBytes();
jnative.setParameter(2, Type.STRING,valuebyte);
jnative.invoke();上面是调用dll的代码 之后应该怎么做呢 ?
for(int i = 0 ;i<valuebyte.length;i++){
byte b = valuebyte[i];
System.out.println(b); }
还是全是0
byte[] bytes_name = name.getBytes();
for (int i = 0; i < name.length(); i++) {
trans[i] = bytes_name[i];
}
return trans;
}
private String transResult(byte[] rets) { StringBuffer retSB = new StringBuffer();
for (int i = 0; i < rets.length; i++) {
retSB.append((char) rets[i]);
} return retSB.toString();
}
jnative.setParameter(2, Type.STRING,paramValue);
jnative.invoke();
String transResult = this.transResult(transName);transResult 的值任然是空~
public static void main(String[] args) throws UnsupportedEncodingException {
Hello h = new Hello();
h.encrypt("para1", "para2");
}
private byte[] transName(String name) {
byte[] bytes_name = name.getBytes();
for (int i = 0; i < name.length(); i++) {
trans[i] = bytes_name[i];
}
return trans;
}
private String transResult(byte[] rets) { StringBuffer retSB = new StringBuffer();
for (int i = 0; i < rets.length; i++) {
retSB.append((char) rets[i]);
} return retSB.toString();
}
public String encrypt(String name, String password) {
String encryption = null;
byte[] trans = transName(name);
CLib lib = (CLib) Native.loadLibrary("Encryption", CLib.class);
int ret = lib.rc4Encrypt(trans, password);
encryption=transResult(trans);
return encryption;
}
public String decrypt(String name, String password){
String decrypt = null;
byte[] trans = invokeName(name);
CLib lib = (CLib) Native.loadLibrary("dll文件名", CLib.class);
int ret = lib.rc4Decrypt(trans,password);
decrypt=transResult(trans);
return decrypt;
}
}
private byte[] transName(String name) {
byte[] bytes_name = name.getBytes();
for (int i = 0; i < name.length(); i++) {
trans[i] = bytes_name[i];
}
return trans;
}方法有问题呢 trans 是哪里来的 ?