簡體   English   中英

Java JNA C ++對方法映射

[英]Java JNA C++ pair method mapping

我有一個簡單的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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM