1

私は何かが欠けているに違いない。を実装するクラスのインスタンスが与えられた場合、関数ポインタ アドレスを として取得して、パラメータを取る関数に渡すにはcom.sun.jna.Callbackどうすればよいですか(私は を使用しています)。Pointervoid*Pointer

具体的には、関数のアドレスを使用してCFNumber(別名NSNumber*) を作成し、呼び出して a を登録できるようにしたいと考えています。CFNumberCreate(Pointer, int, Pointer)SetSpeechPropertySpeechDoneProcPtr

4

2 に答える 2

1

あなたはそうしない。コールバック インスタンスを渡し、JNA にポインター変換を処理させます。GC されないように、コールバック オブジェクトへの強い参照を保持していることを確認してください。

必要に応じて、 の代わりにコールバック タイプを使用する別の関数マッピングを作成しますPointer

コールバック インスタンスのネイティブ ポインター値を取得できますが、取得する必要がある理由はほとんどありません。

于 2013-06-26T18:14:13.170 に答える