Я пишу небольшую программу на Java JNA.У меня есть пример кода на C ++:
HMODULE m_hInstDLL = LoadLibrary("CommLib.DLL");
typedef bool (FAR WINAPI* FARPROC_ADVISE_UNADVISE)(long, char*,char*);
FARPROC_ADVISE_UNADVISE m_procSymbolX_Advise = (FARPROC_ADVISE_UNADVISE)GetProcAddress(m_hInstDLL, "SymbolX_Advise");
С помощью этого примера я знаю, что в Commlib.dll есть функция:
SymbolX_Advise(long, char*, char*)
Где это обработчик для моегоокно (HWND) и указатели на массив символов.Как передать в JNA указатель на массив символов?Я написал что-то вроде этого на Java с помощью JNA:
boolean SymbolX_Advise(int handle, Pointer plc, Pointer tagName);
instance = (CommLib) Native.loadLibrary("CommLib", CommLib.class);
Pointer ptr1 = new Memory(plc.length()+1);
ptr1.setString(0, plc);
Pointer ptr2 = new Memory(tagName.length()+1);
ptr2.setString(0, tagName);
instance.SymbolX_Advise(windowHandler, ptr1, ptr2);
Правильный ли способ передать эти указатели?Потому что теперь это не работает для меня.