我正在用javajna编写一个小程序。我有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");
在这个例子的帮助下,我知道通讯库.dll有一个功能:
SymbolX_Advise(long, char*, char*)
其中long是我的窗口(HWND)的处理程序,并指向char数组的指针。
如何将JNA指针传入char数组?
我在JNA的帮助下用Java写了这样的东西:
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);
传递这些指针的方法正确吗?因为现在它对我不起作用了。