我试图调用以下Delphi方法:
但是,我得到了这个例外:
这是我的代码:
public static void main(String[] args) throws Exception {
//解决中文乱码a
System.setProperty("jna.encoding", "GBK");
byte[] b = FileUtil.file2ByteArray("C:/Users/Administrator/Desktop/work/jyp/dll/钻孔检验批质量验收记录表.LIL");
System.out.println(b);
String nn = "llllllllllll";
//System.out.println(testdll.Instance.PBF_RepToPDF_File("C:/Users/Administrator/Desktop/work/jyp/dll/1啊.LIL","C:/Users/Administrator/Desktop/work/jyp/dll/1_File.PDF" ));
//JYP_TK_ReportDLL.Instance.PBF_RepToPDF_File("C:/Users/Administrator/Desktop/work/jyp/dll/1啊.LIL","C:/Users/Administrator/Desktop/work/jyp/dll/1_File.PDF" );
JYP_TK_ReportDLL.Instance.PBF_RepToPDF_Stream("C:/Users/Administrator/Desktop/work/jyp/dll/1.PDF",nn);
//JYP_TK_ReportDLL.Instance.PBF_RepToJPG_File("C:/Users/Administrator/Desktop/work/jyp/dll/1啊.LIL","C:/Users/Administrator/Desktop/work/jyp/dll/1_File.JPG" );
}
public interface JYP_TK_ReportDLL extends Library {
JYP_TK_ReportDLL Instance = (JYP_TK_ReportDLL) Native.loadLibrary("JYP_TK_ReportDLL",
JYP_TK_ReportDLL.class);
boolean PBF_RepToPDF_Stream(String SaveFile, String arr);
boolean PBF_RepToPDF_File(String SourceFile, String SaveFile);
boolean PBF_RepToJPG_File(String SourceFile, String SaveFile);
}
答案 0 :(得分:2)
不可能从非Delphi模块调用该方法。第二个参数是Delphi本机动态数组。您无法直接从Java模块中创建其中一个。
联系供应商并请求一个可以使用Delphi以外语言的库。这将要求动态数组被两个参数替换。数组的长度,以及数组起始地址。
如果不可能,您需要在Delphi中编写适配器模块。