【发布时间】:2020-04-30 10:46:41
【问题描述】:
我在尝试用 JNA 映射这个 c++ 函数时遇到问题。
https://www.inventcom.net/fanuc-focas-library/program/cnc_rdexecprog
FWLIBAPI short WINAPI cnc_rdexecprog(unsigned short FlibHndl, unsigned short *length, short *blknum, char *data);
我在 java 中尝试了这些映射但不起作用:
short cnc_rdexecprog(short FlibHndl, ShortByReference length, ShortByReference blknum, String data);
short cnc_rdexecprog(short FlibHndl, ShortByReference length, ShortByReference blknum, Pointer data);
short cnc_rdexecprog(short FlibHndl, ShortByReference length, ShortByReference blknum, Memory data);
第一个映射有效,但返回的字符串与我发送的相同,第二个和第三个显示此错误:
Exception in thread "AWT-EventQueue-0" java.lang.Error: Invalid memory access
多亏了这个线程,我才能获得类似的功能: Use C++ DLL from Java with JNA
我认为问题出在输出参数“char *data”上。这个函数怎么映射?
【问题讨论】: