Article View: pl.comp.lang.java
Article #153863Callbacki a JNI
From: Borneq
Date: Sat, 07 Sep 2013 19:53
Date: Sat, 07 Sep 2013 19:53
15 lines
1899 bytes
1899 bytes
Zrobiłem przykład https://github.com/borneq/JNIdemo gdzie metoda w Javie wołana jest jako callback z DLL w C++. Jednak nie jest to prawdziwy callback, o który mi chodzi, taki, który by sięgnął głębiej do innej biblioteki bez źródeł z której korzysta ta moja używająca JNI. W Javie callbacki to metody interfejsu, a w C++, przynajmniej jeśli chodzi o bibliotekę którą chcę obsługiwać, są to wskaźniki na funkcje (nie metodę obiektu). Te wskaźniki ustawiane są przy inicjacji DLL. W JNI wołam metodę poprzez env->CallVoidMethod(param1, method1, i) a nie po wskaźniku, trzeba by chyba w metodzie callbacka C++ to wywołać, ale nie znam ani env ani param1 ani method1. Musiały by być te zmienne zapamiętane globalnie? Jeśli chodzi o method1, to dałoby chyba radę, natomiast nie można by zapamiętac env podczas inicjalizacji, bo po wyjściu z funkcji nie miało by sensu. Chyba że ustawianie callbacka odbywało by się dopiero w nativeLongOperation zamiast tak jak w bibliotece którą chcę obsługiwać - podczas inicjacji.
Technical Details
Message-ID:
<l0g07k$53g$1@node1.news.atman.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mailShow Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail From: "Borneq" <borneq@antyspam.hidden.pl> Newsgroups: pl.comp.lang.java Subject: Callbacki a JNI Date: Sat, 7 Sep 2013 21:53:22 +0200 Organization: ATMAN - ATM S.A. Lines: 16 Message-ID: <l0g07k$53g$1@node1.news.atman.pl> NNTP-Posting-Host: 91.239.205.62 Mime-Version: 1.0 X-Trace: node1.news.atman.pl 1378583604 5232 91.239.205.62 (7 Sep 2013 19:53:24 GMT) X-Complaints-To: usenet@atman.pl NNTP-Posting-Date: Sat, 7 Sep 2013 19:53:24 +0000 (UTC) X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.2900.5931 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6157 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit