我有一个简单的dll,它公开了一个返回类型为
的方法std::pair<int, string>
我正在使用JNA,我想知道如何使用Structure基类映射对结构。是否可以完成Pair<T,E> extends Structure
这样的事情?
感谢。
答案 0 :(得分:1)
简短的回答是否定的,您无法将C ++模板映射到Java Generics中。虽然看起来很相似,但它们完全不同。
稍微长一点的答案是肯定的,你可以映射它,虽然这个过程是手动的。如果打算在单一平台上运行,那可能是值得的。
首先确定您的货币对的数据偏移量 使用对应于对数据偏移的偏移量的字段创建JNA结构。
// C++
typedef std::pair<int,string> mypair;
mypair* p = (mypair *)0;
offset_t PADDING1 = (char*)&p->first - (char*)p;
offset_t PADDING2 = (char*)&p->second - (char *)p;
// Java
class MyPair extends Structure {
public byte[] = byte[PADDING1]; // omit if PADDING1 is zero
public first;
public byte[] = byte[PADDING2]; // omit if PADDING2 is zero
public second;
}