【发布时间】:2011-02-07 17:14:42
【问题描述】:
在我需要包装的 DLL 头文件中,使用 BSTR 数据类型作为 I/O 参数。我需要在 JNA 中创建它的映射。我找到了以下示例:
class BSTR extends PointerType {
public BSTR() { }
public BSTR(String value) {
super(new Memory(value.length()*2+6).share(4));
getPointer().setInt(-4, value.length()*2);
getPointer().setString(0, value, true);
}
public String toString() {
int length = getPointer().getInt(-4);
char[] data = getPointer().getCharArray(0, length/2);
return new String(data);
}
}
但在 JNA 方法调用中使用它后,结果为空(= 长度为 0 且没有数据)。您对如何为 BSTR 创建正确的映射以将其用作函数的 I/O 参数有任何建议吗?看起来 BSTR 没有通过引用传递给 DLL 方法,所以结果仍然是空的,但这只是我的假设。也许映射是正确的,但在方法调用中被错误地使用了。提前感谢您的任何建议。
【问题讨论】: