Я хочу вызвать функцию "mytestFunction" в Java через JNA.Вот как я называю метод в C ++:
size_t input_length = 67U;
uint8_t input[67U] = { 0x30, 0x41, 0x80, ....};
uint8_t *output_buffer = NULL;
size_t output_length = 0;
uint32_t errorCode = 0;
errorCode = mytestFunction(input, input_length, &output_buffer, &output_length);
Вот как я называю метод в Java:
IcbdpClient cbdpFuncs = (IcbdpClient) Native.load("myDLL.dll", IcbdpClient.class);
int[] input = new int[]{0x30, 0x41, 0x80, ....};
SizeT input_length = new SizeT(input.length);
Pointer output_buffer = new Memory(1);
SizeT output_length = new SizeT(0);
err = cbdpFuncs.mytestFunction(input, input_length, output_buffer, output_length);
Я уже вызывал метод с одним байтом [] Paramter,Все работает.Но теперь, когда я делаю функцию cbdpFuncs.mytestFunction, я получаю «java.lang.Error: Неверный доступ к памяти».Я думаю, что обрабатывать параметры output_buffer и output_length false.Но я не знаю, каков правильный путь.
РЕДАКТИРОВАТЬ: в ICdpClient mytestFunction называется как:
int mytestFunction (int[] input, SizeT input_length, Pointer output_buffer, SizeT output_length);