Comment appeler un rappel C ++ à partir de Java Indice de l’application C ++ via JNI – Java, C ++, Callback, JNI

J’ai une application C ++, vous avez besoin d’un interféron une bibliothèque Java. Je souhaite recevoir des notifications du côté Java, vous devez donc appeler l’application C ++. J’ai trouvé de nombreux exemples sur la manière d’invoquer des fonctions Java à partir de C ++ (c’est la partie facile) et comment appeler des fonctions C / C ++ de Java exportées depuis une DLL.

Tout ce que je Vous avez trouvé jusqu’à présent comment appeler Java Call Retours à partir d’une fonction externe C ++ dans une application Java. J’ai besoin de sinon.

avec direct C ++ Ceci, bien sûr, c’est facile. J’ai simplement passé un indicateur de fonction à la classe qui à son tour appellerait comme un rappel si nécessaire. Comment puis-je faire cela quand j’appellerais une fonction Java?

Au cas où il y a une meilleure façon que je demande ici est l’application générale:

My Application C ++ Vous devez accéder à un serveur externe qui transmettra les données à mon application. L’API d’accès est une API basée sur Java. Mon plan actuel consiste à créer un conteneur Java qui gère tous les appels à l’API. Cet emballage sera invoqué à partir de mon application C ++ à l’aide de JNI. Lorsque les données sont reçues, elles les traiteront autant que possible, puis notifiez mon application C ++ avec les données définies.

résumer, comment puis-je appeler une fonction de rappel C + +? La classe Java qui a été invoquée à travers JNI à partir d’une application C ++. Ne chargez pas de fichier DLL pour utiliser Java. Bien que je puisse faire un si nécessaire si tout peut interagir correctement.

chemin de fonction: C ++ Application – > Bibliothèque de classe Java – >

réponses

3 pour la réponse № 1

Je l’ai trouvé. Il existe une fonction dans la classe d’environnement appelée «inscription». Avec cela, je peux enregistrer des rendements d’appels C ++ pour tout type de Java au moment de l’exécution. Je l’ai essayé et ça marche exactement comme prévu.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *