2016-09-19 11 views
1

JNAオブジェクトをJavaの内部で初期化および書き込みするために渡すことはできますか?JNAオブジェクトはJavaコード内の参照または値で渡されますか

- >構造体の各メンバーを初期化するメソッドや、配列を埋めるその他のメソッドなどを持つことは可能ですか?

私はあなたがJavaオブジェクトへのネイティブメモリを同期さことができますが、ネイティブメモリ上のJavaオブジェクトをオーバーレイすることはできませんし、あなた Javaオブジェクトのメモリを公開するべきではないのGoogleには何の答えが見つからない/もhttps://jna.java.net/

+0

あなたは "JNAオブジェクト" とはどういう意味ですか? JNAにはネイティブ関数_and_ dataを操作するためのツールが用意されています。 – technomage

+0

例えばstructオブジェクトは、java内で同じ構造体を渡すか、同じ構造体のコピーを渡しますか?同じオブジェクトを操作するか、新しいメモリ位置で値のコピーを作成しますか? – gismo

答えて

0

ネイティブコードに直接変換します。 JNAが行うことは、ネイティブ・メモリーをJavaオブジェクトと関連付けて、2つを同期させる方法を提供することです。

生メモリ:

Pointer memory = new Memory(128); 
memory.setInt(0, 1234) 

構造化データ:

MyStructure s = new MyStructure(); 
s.int_field = 1234; 
s.write(); 

s = new MyStructure(native_pointer); 
s.read(); 
System.out.println("Field: %s", s.int_field); 
+0

シンクロナイズする方法を簡単な例で教えてください。 また、javaの構造体オブジェクトを渡して値を変更する場合は、実際の値を変更するか、ローカルバージョンのみを変更しますか(Javaの場合は通常動作します) – gismo

関連する問題