首页 > 代码库 > JNA调用Delphi7的DLL传递接收中文参数的方法
JNA调用Delphi7的DLL传递接收中文参数的方法
项目要写个DLL调用硬件,因为人力资源的原因只能用Delphi7开发,结果发现传递中文有点问题,研究了一番后解决,其实很简单,关键是使用system.pas下的编码解码方法。以下在本机测试通过。
环境:
Win7 64位旗舰版
JDK1.6 x86
MyEclipse8.6
Delphi7
Delphi代码:
library Project2; uses SysUtils, Dialogs; {$R *.res} function testDLL(sInput: PChar):PChar; stdcall; export; var sTemp : WideString; begin sTemp := UTF8Decode(sInput); ShowMessage(sTemp); result := PChar(UTF8Encode(‘清純哲學TOP1賽高!‘)); end; exports testDLL index 1; begin end.
Java代码:
import com.sun.jna.win32.StdCallLibrary;//delphi7编译的dll一定要用这个,原因你懂的 import com.sun.jna.Native;
// 必须继承Library 这个是jna标准 // 必须定义一个接口,描述所调用的dll或者so文件的方法结构 public interface MyLibrary extends StdCallLibrary { MyLibrary instance = (MyLibrary)Native.loadLibrary("Project2",MyLibrary.class); //描述Project2.dll结构 String testDLL(String sInput); } public static void main(String[] args) { try { String sInput = "峯岸Team4最高!"; String tmp = MyLibrary.instance.testDLL(sInput); System.out.println(tmp); } catch (Exception e) { e.printStackTrace(); } }
经测试DLL内ShowMessage及JAVA控制台输出中文均正常显示
本文出自 “赞否两论-量子” 博客,请务必保留此出处http://quantum.blog.51cto.com/3633234/1410856
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。