【发布时间】:2010-10-30 09:53:03
【问题描述】:
我正在尝试使用 JNA 通过插入计算机的 USB 设备进行通话。使用 Java 和提供给我的 .dll。我在使用 Write 功能时遇到问题:
C 代码:
typedef struct {
unsigned int id;
unsigned int timestamp;
unsigned char flags;
unsigned char len;
unsigned char data[16];
} CANMsg;
CAN_STATUS canplus_Write(
CANHANDLE handle, //long
CANMsg *msg
);
Java 等价物:
public class CANMsg extends Structure{
public int id = 0;
public int timestamp = 0;
public byte flags = 0;
public byte len = 8;
public byte data[] = new byte[16];
}
int canplus_Write(NativeLong handle, CANMsg msg);
我已确认我可以打开和关闭设备。关闭需要 NativeLong 句柄,所以我假设 CANMsg 消息是这里的问题。我还确认该设备在使用纯 C 代码进行测试时可以正常工作。
我已经彻底阅读了 JNA 文档……我想。任何指针。谢谢大家。
【问题讨论】:
标签: java c struct pass-by-reference jna