Cum să sunați la un apel C ++ de la Java sa bazat din aplicația C ++ prin JNI – Java, C ++, apel invers, JNi

Am o aplicație C ++ Aveți nevoie de un interferon o bibliotecă Java. Aș dori să primesc notificări pe partea Java, deci trebuie să apelați aplicația C ++. Am găsit numeroase exemple despre cum să invocăm funcțiile Java de la C ++ (aceasta este partea ușoară) și cum să apelați funcțiile C / C ++ de la Java care sunt exportate de la un DLL.

Tot ceea ce eu S-au găsit până acum este modul de invocare a apelurilor Java de la o funcție C ++ externă într-o aplicație Java. Am nevoie de altfel.

cu Direct C ++ acest lucru, desigur, este ușor. Pur și simplu am trecut un indicator de funcții la clasa care, la rândul său, ar fi apelat ca o înregistrare a apelurilor atunci când este necesar. Cum pot face acest lucru atunci când invocg o funcție Java?

în cazul în care există o cale mai bună decât eu cer aici este aplicația generală:

aplicația mea C ++ Trebuie să accesați un server extern care va transmite datele înapoi la aplicația mea. API-ul Access este un API bazat pe Java. Planul meu actual este de a construi un container Java care gestionează toate apelurile către API. Acest ambalaj va fi invocat din aplicația mea C ++ utilizând JNI. Când datele sunt primite, le vor procesa cât mai mult posibil și apoi vor notifica aplicația C ++ cu datele setate.

Pentru a rezuma, cum pot apela o funcție C + Callback +? Clasa Java care, la rândul său, a fost invocată prin JNI de la o aplicație C ++. Nu încărcați niciun fișier DLL pentru a utiliza Java. Deși pot face unul dacă este necesar, dacă totul poate interacționa corect.

Calea funcției: C ++ Application – > bibliotecă de clasă Java – >

Răspunsuri

3 Pentru răspunsul № 1

Am găsit-o. Există o funcție în clasa de mediu numită „Înregistrare”. Cu acest lucru pot înregistra apelurile C ++ returnează pentru orice fel de Java la Runtime. Am încercat și funcționează exact așa cum era de așteptat.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *