首页 > 其他 > 详细

JNA调用Delphi7的DLL传递接收中文参数的方法

时间:2014-05-14 15:53:35      阅读:611      评论:0      收藏:0      [点我收藏+]

项目要写个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

JNA调用Delphi7的DLL传递接收中文参数的方法,布布扣,bubuko.com

JNA调用Delphi7的DLL传递接收中文参数的方法

原文:http://quantum.blog.51cto.com/3633234/1410856

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!