我尝试使用 JNA 访问 C++ DLL 的方法。
定义如下:
u32t OpenPort(u8t valueA, char* valueB, u32t* handle);
我不确定如何映射 u32t 以及如何使用指针或内存获取 returnValue?
我是这样做的:
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);
返回错误表明端口句柄无效。
DLL 制造商提供的示例 C# 代码如下:
UInt32 handle;
UInt32 error;
error= OpenPort(0, "teststring", out handle);
xError = ClosePort(handle);
开心每一天1111
相关分类