Delphi 代码
unit UnitDll;
interface
uses
StrUtils, SysUtils, Dialogs;
function DoBusinessWide(pvData: PWideChar): PWideChar; stdcall;
implementation
function DoBusinessWide(pvData: PWideChar): PWideChar; stdcall;
var
lvData: WideString;
begin
ShowMessage(pvData);
lvData := pvData;
ShowMessage(lvData);
lvData := lvData + FormatDateTime('YYYYMMDDHHMMSSZZZ',Now);
Result := PWideChar(lvData);
ShowMessage(Result);
end;
end.
Java调用代码
···
package com.jna.demo;
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.WString;
public class JnaDemo {
public interface RtcPubLibrary extends Library{
RtcPubLibrary instance = (RtcPubLibrary) Native.loadLibrary("JavaDll", RtcPubLibrary.class);
public WString DoBusinessWide(char[] pvData);
}
public static void main(String[] args) {
System.setProperty("jna.encoding", "GBK");
StringBuilder sBuilder = new StringBuilder();
sBuilder.append("123测试");
char[] pvData = sBuilder.toString().toCharArray();
WString lvData = RtcPubLibrary.instance.DoBusinessWide(pvData);
System.out.println("Wstring-->" + lvData);
}
}
···

本文介绍了一个使用Delphi编写的DLL导出函数,并通过Java的JNA库实现跨语言调用的例子。Delphi函数接收宽字符数据并返回当前时间戳格式化的宽字符串。Java程序加载DLL并调用该函数,展示如何在Java中处理Delphi返回的数据。

被折叠的 条评论
为什么被折叠?



