jna指南

配置

引入相关jar

1
2
jna.jar
example.jar

放置相关so

字段对应

c java
LONG NativeLong
char[] byte[]
byte byte
byte[] byte[]
BOOL int
WORD short or int
void* Pointer
LP** Pointer
struct Structure
CALLBACK Callback

LP**

1
LP**对应相关去除LP的继承Structure的类的getPointer()

struct

对应继承Structure的类

NET_**

对应常量

**CallBack

对应回调函数,继承Callback的接口

1
2
3
4
5
6
7
8
9
typedef void(CALLBACK *fLoginResultCallBack)(
LONG lUserID,
DWORD dwResult,
LPNET_DVR_DEVICEINFO_V30 lpDeviceInfo
void *pUser);

public static interface FLoginResultCallBack extends Callback{
public int invoke(NativeLong lUserID, int dwResult, Pointer lpDeviceinfo, Pointer pUser);
}

函数

函数对应方法

1
2
BOOL NET_DVR_Init()
boolean NET_DVR_Init();

string 长度计算

if (wide) {
int len = (string.length() + 1 ) * Native.WCHAR_SIZE;
pointer = new Memory(len);
pointer.setString(0, string, true);
}
else {
byte[] data = Native.toByteArray(string);
pointer = new Memory(data.length + 1);
pointer.write(0, data, 0, data.length);
pointer.setByte(data.length, (byte)0);
}

作者

苏同

发布于

2019-08-28

更新于

2019-08-28

许可协议