[英]JNA - Structure creation error
我有以下C ++代码:
typedef struct {
int TabSock[1024];
DWORD TabIP[1024];
int NumSockConec;
} TTABSOCK;
typedef TTABSOCK *PTABSOCK;
和一个功能:
TTABSOCK __stdcall mt_connectlist(void);
上面的函数在DLL中。 我正在尝试使用JNA在Java中创建该Struct,但没有成功。 当我尝试执行该本机函数时,我的程序出错并关闭。
以下是我在Java / JNA中对结构的实现:
public class TTABSOCK extends Structure {
public int[] TabSock = new int[1024];
public DWORD[] TabIP = new DWORD[1024];
public int NumSockConec;
}
我究竟做错了什么?
非常感谢。
我认为您不应该初始化数组...不,算了吧,这不应该是问题。
public static class TTABSOCK extends Structure {
public int[] TabSock = new int[1024];
public DWORD[] TabIP = new DWORD[1024];
public int NumSockConec;
public static class ByReference extends TTABSOCK implements Structure.ByReference {};
public static class ByValue extends TTABSOCK implements Structure.ByValue {};
}
您需要确保按值返回结构。 默认情况下,JNA Structure在参数和返回类型中被视为“ struct *”,因此在这种情况下,您需要指示您想要“ struct”行为。
public interface MyLibrary extends StdCallLibrary {
class TTABSOCK extends Structure {
public static class ByValue extends TTABSOCK implements Structure.ByValue { }
// ...
}
TTBASOCK.ByValue mt_connectlist();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.