Java JNA получает и передает собственный указатель ⇐ JAVA
-
Гость
Java JNA получает и передает собственный указатель
Как с помощью Java JNA получить указатель из собственного метода и передать его другому собственному методу?
//C-код .h ... extern "C" HN2QCONN __stdcall N2QLibConnCreate(LPCTSTR lpszIniFile, LPCTSTR lpszSection, N2Q_CALLBACK_PROC Обратный вызов); extern "C" BOOL __stdcall N2QLibConnectQuik(HN2QCONN hConn); ... //другой код C .h ... DECLARE_HANDLE (HN2QCONN); ... //проверка кода C .cpp HN2QCONN hConn = N2QLibConnCreate("n2q.ini", "local", CallbackProc); если (!N2QLibConnectQuik(hConn)) printf("Ошибка подключения к серверу."); Как я могу сделать то же самое на Java? Как правильно получить данные из собственного метода и использовать управляемый код для передачи их обратно в собственный метод?
Я пытаюсь это сделать:
//код Java ... общедоступный интерфейс N2q_lib расширяет библиотеку { N2q_lib INSTANCE = (N2q_lib)Native.load("n2q_lib.dll", N2q_lib.class); Указатель N2QLibConnCreate (String lpszIniFile, String lpszSection, Обратный вызов N2q_callback_proc); логическое значение N2QLibConnectQuik (указатель ptr); } ... Приложение общедоступного класса { public static void main( String[] args) { Указатель ptr = новая память(N2q_lib.INSTANCE.N2QLibConnCreate("n2q.ini", "local", null)); если (!N2q_lib.INSTANCE.N2QLibConnectQuik(ptr)) System.out.println("Ошибка подключения к серверу."); } } Но я всегда получаю «ложь». Я неправильно использую указатели?
Как с помощью Java JNA получить указатель из собственного метода и передать его другому собственному методу?
//C-код .h ... extern "C" HN2QCONN __stdcall N2QLibConnCreate(LPCTSTR lpszIniFile, LPCTSTR lpszSection, N2Q_CALLBACK_PROC Обратный вызов); extern "C" BOOL __stdcall N2QLibConnectQuik(HN2QCONN hConn); ... //другой код C .h ... DECLARE_HANDLE (HN2QCONN); ... //проверка кода C .cpp HN2QCONN hConn = N2QLibConnCreate("n2q.ini", "local", CallbackProc); если (!N2QLibConnectQuik(hConn)) printf("Ошибка подключения к серверу."); Как я могу сделать то же самое на Java? Как правильно получить данные из собственного метода и использовать управляемый код для передачи их обратно в собственный метод?
Я пытаюсь это сделать:
//код Java ... общедоступный интерфейс N2q_lib расширяет библиотеку { N2q_lib INSTANCE = (N2q_lib)Native.load("n2q_lib.dll", N2q_lib.class); Указатель N2QLibConnCreate (String lpszIniFile, String lpszSection, Обратный вызов N2q_callback_proc); логическое значение N2QLibConnectQuik (указатель ptr); } ... Приложение общедоступного класса { public static void main( String[] args) { Указатель ptr = новая память(N2q_lib.INSTANCE.N2QLibConnCreate("n2q.ini", "local", null)); если (!N2q_lib.INSTANCE.N2QLibConnectQuik(ptr)) System.out.println("Ошибка подключения к серверу."); } } Но я всегда получаю «ложь». Я неправильно использую указатели?
Мобильная версия