cyy298
cyy298
2019-02-21 10:18
采纳率: 40%
浏览 1.2k

jna调用dll,如何获取lpstr类型的传出参数

dll中函数的描述

function SendRcvB(pDataInput: LPSTR;
  iDataInputLen: LongInt;
  pDataOutput: LPSTR;
  iDataOutputLen: LongInt): LongInt; stdcall;
pDataInput:传入参数,SSSS...ZZZZ
iDataInputLen:传入参数的长度
pDataOutput: 传出参数,RRRR...ZZZZ
iDataOutputLen:传出参数的长度
返回值:0:正常;-1:连接错误;-9:传入消息错误或者获取配置错误

jna中对应的定义

public String SendRcvB(String pDataInput,Integer iDataInputLen,String pDataOutput,Integer iDataOutputLen);

看到调用需要给 传出参数分配内存空间,java应该怎么写呢定义一个空的byte数组吗?

里边只给了Delphi的例子 GetMem(pDataOutput, 4096);
请问这个用java怎么写

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • caozhy

    Windows API函数 GetWindowText 就是传出 lpStr 类型的,所以你可以参考下面代码
    https://cloud.tencent.com/developer/ask/143044
    对 GetWindowText 的调用。

    点赞 评论
  • cyy298
    cyy298 2019-03-13 16:08

    已经找到了办法
    使用byte[] output = new byte[4096];声明返回参数就可以了

    点赞 评论

相关推荐