请教:jna调用dll参数传递问题

西瓜超人。 2019-07-26 01:48:09
请教,通过java jna调用dll动态库,类型问题,在写卡的时候,提示参数错误
想了解下c++和java的类型的对应关系,如下的参数都为入参
[code=c]extern "C" __declspec(dllexport)  int __stdcall Write(__int16 com,int b, __int16 type,__int16 op,char * no,int  vol,__int16  count,int ij1,int ij2,int ij3,int ij4,int ij5,int ijtl1,int ijtl2,int ijtl3,int ijtl4,char *jgrq,char *jgzqrq,__int16 ijgzqcd,__int16 ijgver,int ijg1y,int ijg2y,int ijg3y,int ijg4y,int ijg5y,int ijtql1y,int ijtql2y,int ijtql3y,int ijtql4y,char *jgrqy,char *jgzqrqy,__int16 ijgzqcdy,__int16 ijgvery,__int16 bjlbz,__int16 bjl1,__int16 bjl2)
[/code]

java 代码
int Write(int com, int b, int type, int op, String no, int vol, int count,
int ij1, int ij2, int ij3, int ij4, int ij5,
int ijtl1, int ijtl2, int ijtl3, int ijtl4,
String jgrq, String jgzqrq,
int ijgzqcd, int ijgver,
int ijg1y, int ijg2y, int ijg3y, int ijg4y, int ijg5y,
int ijtql1y, int ijtql2y, int ijtql3y, int ijtql4y,
String jgrqy, String jgzqrqy,
int ijgzqcdy, int ijgvery, int bjlbz, int bjl1, int bjl2);
...全文
85 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qybao 2019-07-26
  • 打赏
  • 举报
回复
char*用byte[]试试看
如果用Pointer,你可以把出参入参打印一下看看,里面都是什么内容

西瓜超人。 2019-07-26
  • 打赏
  • 举报
回复
引用 1 楼 qybao 的回复:
c里int是4个字节,java也是 c里int16是2个字节,所以java可以用char来对应 c里的char*,java用char[]对应
按照您这边给出来的解释,依然提示的参数错误 现在我这边测试,应该问题出现在char*的传递上,c中char*,在java中有没有其他的方式对应呢? 在读卡的函数中,char*是出参,我使用的Pointer,但是在write函数中无效,想问下出参和入参在传递中有没有什么不同
qybao 2019-07-26
  • 打赏
  • 举报
回复
c里int是4个字节,java也是
c里int16是2个字节,所以java可以用char来对应
c里的char*,java用char[]对应

81,090

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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