gpt4 book ai didi

Java JNA C++ 对方法映射

转载 作者:行者123 更新时间:2023-11-28 08:02:53 25 4
gpt4 key购买 nike

我有一个简单的 dll,它公开了一个具有返回类型的方法

std::pair<int, string>

我正在使用 JNA,我想知道如何使用 Structure 基类映射一对结构。可以像Pair<T,E> extends Structure吗完成了吗?

谢谢。

最佳答案

简短的回答是否定的,您不能将 C++ 模板映射到 Java 泛型。虽然它们看起来很相似,但它们是完全不同的东西。

稍微长一点的回答是,是的,你可以映射它,尽管这个过程是手动的。如果这是为了在单一平台上运行,那么麻烦可能是值得的。

首先确定你的数据对的偏移量,然后创建一个 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;
}

关于Java JNA C++ 对方法映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10928645/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com