JNA を使用して Java からネイティブ dll を使用しようとしています。私はJavaとJNAの両方が初めてです。dll エクスポート メソッドへの関数パラメーターとしてコールバック関数を使用すると問題が発生します。
ネイティブ関数の外観は次のとおりです。
RegisterCallback(UNUM32 hMod, UNUM32 hCLL, CALLBACKFNC EventCallbackFunction)
このメソッドは基本的に、DLL によって特定のイベントが検出されるたびに、この Java メソッドをコールバックとして使用するように DLL に指示します。
これがコールバック関数のプロトタイプです。
EventCallbackFunction(UNUM32 eventType, UNUM32 hMod, UNUM32 hCLL, void *pCTag, void *pTag)
これがJava側の実装です。
Library.INSTANCE.RegisterCallback(hMod, hCLL, eventCallbackFunction);
eventCallbackFunction は次のようになります。
public interface EventCallbackInterface extends Callback {
public void callback(int eventType, int hMod, int hCll, Pointer clltag, Pointer apiTag);
}
public class Bridge{
public static EventCallbackInterface eventCallbackFunction = new EventCallbackInterface(){
public void callback(int eventType, int hMod, int hCll, Pointer clltag, Pointer apiTag) { System.out.println("Into the callback function: ");}
} }
クラッシュは見られませんが、DLL が正しいイベントを認識しているにもかかわらず、単に機能しません。誰かこの点で私を助けてくれませんか? よろしくお願いします!