Я пытаюсь вызвать функцию C ++, присутствующую в файле dll, функция C ++ принимает объект структуры в качестве параметра, и функция будет присваивать ему значения.Я использую это через нативные вызовы Java, и моя программа ниже,
public class WTS_CLIENT_ADDRESS extends Structure {
public static class ByReference extends WTS_CLIENT_ADDRESS implements Structure.ByReference {
}
public int AddressFamily;
public byte[] Address = new byte[20];
public WTS_CLIENT_ADDRESS() {
}
public WTS_CLIENT_ADDRESS(Pointer p) {
super(p);
}
public byte[] getByteArray() {
return Address;
}
@Override
protected List getFieldOrder() {
return Arrays.asList("AddressFamily", "Address");
}
}
Я получаю значения для AddressFamily правильно, но не для Address.похоже, что-то идет не так в структуре данных между байтовым массивом в c ++ и определенным байтовым массивом структуры java.Любая помощь?
Структура C ++ для него,
typedef struct _WTS_CLIENT_ADDRESS {
DWORD AddressFamily;
BYTE Address[20];
} WTS_CLIENT_ADDRESS, *PWTS_CLIENT_ADDRESS;