64位jdk 调用32位dll
delphi有一部分逻辑翻译成java未遂,想到dll封装
又奈何导出的是32位dll,切jdk版本不太合适
尝试了一些网上的办法,技术不达标,最后还是用java搞咯,轻车熟路的
我的大体思路:写个调用dll的java文件,cmd用32位jdk运行,程序执行cmd命令
1、准备:jdk 、jna.jar
2、写个调用dll的方法(关键词替换掉了)
import com.sun.jna.Library; import com.sun.jna.Native; public class testDll { public static void main(String[] args) { System.load(args[1]+"****.dll"); testDll.testInter test = (testDll.testInter) Native.loadLibrary("****", testInter.class); System.out.println(test.test(args[0])); } public interface testInter extends Library { public String test(String str); } }
3、编译,我把jna,jar放到了bin目录
D: cd D:\softwares\Java\java32\jdk1.7.0_65\bin javac.exe -classpath jna-4.1.0.jar testDll.java
4、试下效果
传了两个参数,
dll所在的目录当成参数传过来了
java.exe -cp .;jna-4.1.0.jar passEncode testStr D:\
java调用: Process process = Runtime.getRuntime().exec("cmd /c cd "+path+" &&java -cp .;jna-4.1.0.jar testDll "+str + " "+path+"/"); BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); String line; while((line=reader.readLine())!=null){result.append(line);} reader.close(); process.destroy();
算是能解决我的问题,不通用处还请多多指教