2015-01-30 1 views
0

Я делаю несколько обратных вызовов, но в DLL, которые я использую Я получил некоторые функции, которые используют другие функции в качестве параметров, я уже пытался использовать интерфейс, но я не мог заставить его работать.Функция dll с функцией как параметр (Callback Java)

Функция в 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

Если кто-то застрял в этой же проблемой.

вам необходимо создать интерфейс для каждой функции, используемой в качестве параметра, то использовать этот интерфейс для создания ссылки, как делегаты в 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); 
} 

вам нужно будет использовать: импорт com.sun.jna .win32.StdCallLibrary;