JNA调用DLL--Struct里有个HWND不知道怎么转换

他不杀你说明他爱你 2014-04-01 10:38:48
C代码
typedef struct{
LONG lChannel;
LONG lLinkMode;
HWND hPlayWnd;
char* sMultiCastIP;
}ANTS_NET_DVR_CLIENTINFO, *LPANTS_NET_DVR_CLIENTINFO;


转换后的JAVA代码
	public static class LPANTS_NET_DVR_CLIENTINFO extends Structure {
public Long lChannel;
public Long lLinkMode;
public HWND hPlayWnd;
public String sMultiCastIP;

@Override
protected List getFieldOrder() {
// TODO Auto-generated method stub
ArrayList list = new ArrayList<>();
list.add("lChannel");
list.add("lLinkMode");
list.add("hPlayWnd");
list.add("sMultiCastIP");
return list;
}
}


用的是JNA 4.10
在一定的情况下new LPANTS_NET_DVR_CLIENTINFO会报下列错误
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x779c3ac5, pid=7372, tid=8084
#
# JRE version: Java(TM) SE Runtime Environment (8.0_20-b05) (build 1.8.0_20-ea-b05)
# Java VM: Java HotSpot(TM) Client VM (25.20-b05 mixed mode, sharing windows-x86 )
# Problematic frame:
# C [ntdll.dll+0x33ac5]


就帮助。。
...全文
489 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
求一个JNA的讨论交流群。。或者可以交流的地方。。刚开始用jna不是很懂。。。
  • 打赏
  • 举报
回复
引用 1 楼 suciver 的回复:
HWND是windows中的句柄,代表的是32位的整数转成的java你可以用Integer
com.sun.jna.platform.win32.WinDef.HWND 和Integer应该都可以。。 - - 问题貌似是我连接的时候没有初始化造成的。。.真伤感
  • 打赏
  • 举报
回复
引用 1 楼 suciver 的回复:
HWND是windows中的句柄,代表的是32位的整数转成的java你可以用Integer
一样的错误。我不确定是哪的问题。。调用的是网络摄像头的sdk。。如果把摄像头关了 就没有问题- - 打开就会报错。。
suciver 2014-04-01
  • 打赏
  • 举报
回复
HWND是windows中的句柄,代表的是32位的整数转成的java你可以用Integer

62,634

社区成员

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

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