Я пытаюсь получить доступ к методу C ++ DLL с использованием JNA.
Определение следующее:
u32t OpenPort(u8t valueA, char* valueB, u32t* handle);
Я не уверен, как отобразить u32t и как получитьreturnValue используя или Pointer или Memory возможно?
Я сделал это так:
int OpenPort(byte valueA, String valueB, IntByReference handle); //u32t OpenPort(u8t type, char* myString, u32t* handle);
и вызвав
IntByReference handle = new IntByReference();
byte i = 0;
int error = myClass.OpenPort(i, "my string", handle);
System.out.println(error + " - " + handle.getValue());
Результат - "0 - 0".
С ошибкой "0" все в порядке, но returnValue не должно быть 0. Поскольку это значение, которое мне нужно передать другим методам, таким как:
int ClosePort(IntByReference handle); //u32t ClosePort(u32t handle);
, если я начну:
error = myClass.ClosePort(handle);
В сообщении об ошибке указывается, что дескриптор порта недопустим.
Пример кода C # от производителя DLL выглядит следующим образом:
UInt32 handle;
UInt32 error;
error= OpenPort(0, "teststring", out handle);
xError = ClosePort(handle);