Java 通过JNA调用Delphi方法时内存访问无效
我试图调用以下Delphi方法: 但是,我有一个例外: 这是我的密码:Java 通过JNA调用Delphi方法时内存访问无效,java,delphi,jna,Java,Delphi,Jna,我试图调用以下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/钻孔检验批质量验收
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);
}
不可能从非Delphi模块调用该方法。第二个参数是Delphi本机动态数组。您不能直接从您的Java模块中创建其中一个 请与供应商联系,并要求提供一个可从除Delphi以外的语言使用的库。这将需要用两个参数替换动态数组。数组的长度和数组开头的地址
如果这是不可能的,您将需要在Delphi中编写一个适配器模块 请记住从StdCallLibrary而不是Library进行扩展。因此,感谢Delphi TByteDnarray-->JAVA字节[],我解决了这个问题