带函数的dll函数作为参数(Callback Java)

时间:2015-01-30 17:55:51

标签: java dll callback

我正在进行一些回调但是在我正在使用的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);

1 个答案:

答案 0 :(得分:0)

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

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

public interface anInterface extends Library {

   anInterface INSTANCE = (anInterface)Native.loadLibrary((Platform.isWindows() ? "dll" : "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;