以函数为参数的 dll 函数(回调 Java)

Function of a dll with function as parameter (Callback Java)

我正在做一些回调,但在我使用的 DLL 中,我得到了一些使用另一个函数作为参数的函数,我已经尝试使用该接口,但我无法使其工作。

DLL中的函数是这样的:

extern "C" { __declspec(dllexport) DIRET_CALLBACK void RegEnterString(pCallBackEnterString);}

我在 C# 中得到了一个例子:

[UnmanagedFunctionPointer(CallingConvention.StdCall)]
public delegate void _RegEnterString(_CallBackEnterString cbEnterString);
private _RegEnterString dllRegEnterString;

public delegate int _CallBackEnterString(StringBuilder parte1, int tamParte1, StringBuilder parte2, int tamParte2);

如果有人遇到同样的问题。

您需要为用作参数的每个函数创建一个接口,然后像 C# 中的委托一样使用该接口创建引用

public interface anInterface extends Library {

   anInterface INSTANCE = (anInterface)Native.loadLibrary("dll"),
    anInterface.class); 

    
    public interface iCallback extends StdCallLibrary.StdCallCallback{
        public int passedFunction(String label);
    }

    public void aFunction(iCallback cb);   
}

您将需要使用:import com.sun.jna.win32.StdCallLibrary;