0

戻り値の型を持つメソッドを公開する単純な dll があります

std::pair<int, string>

私は JNA を使用していますが、Structure 基本クラスを使用してペア構造をどのようにマッピングできるのか疑問に思っていました。のようなPair<T,E> extends Structureことができるでしょうか?

ありがとう。

4

1 に答える 1

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;
}
于 2012-06-07T15:31:35.937 に答える