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