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.