jna 调用delphi写的dll如何传结构体的地址?

cs1915 2012-02-02 02:12:02
delphi中定义了一个函数,原型如下:
Function WriteICCardMessage(var CustomerInfo:PCustomerCard) : integer ; stdcall ;
begin
CustomerInfo.CardNo:='11111';
CustomerInfo.CardName:='wwww';
CustomerInfo.Money:=221;
CustomerInfo.sfType:=1;
Result:=1;
end;

写一个java程序调用该方法

public interface CallTestDll extends StdCallLibrary {
CallTestDll INSTANCE = (CallTestDll) Native.loadLibrary(
"Project2.dll", CallTestDll.class);
public int WriteICCardMessage(Object ppUser);
}

在main方法里面使用如下写法
CustomerCard customerCard=new CustomerCard();

PointerByReference ppUser=new PointerByReference(customerCard.getPointer());
customerCard.write();
System.out.println(callReadCard.WriteICCardMessage(ppUser));
System.out.println(customerCard.sfType);

无法获取在dll里面修改后的结构体的值.
请问各位高手,应该如何修改之处代码?
...全文
85 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

51,409

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧