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();

算是能解决我的问题,不通用处还请多多指教

猜你喜欢

转载自www.cnblogs.com/luowusheng/p/11096143.html
今日推荐