2012-01-06 4 views
0

mes classes java qui reflètent les classes C++ contiennent un champ qui détient le C++ pointeur sur l'instance du C cette partie fonctionne aussi normale que beaucoup d'autres emballagesjava instance de classe magasin JNI pour une réutilisation ultérieure

Ce que je veux faire est l'inverse aussi bien

Je veux être en mesure de stocker l'instance de java dans le domaine UserData de classe C++

lorsque la bibliothèque C++ j'emballage renvoie un C++ instance de classe Je veux être en mesure prendre les données utilisateur et le convertir en l'instance de classe java qui tient le ce pointeur, je ne veux pas recréer un nouvel objet java avec le pointeur, mais réutiliser l'instance de classe d'origine ...

pour aider cette explication que je détaillerai un cycle de vie exemple

un nouvel objet java est créé le constructeur de l'objet java appelle une fonction native avec « cette » il crée un objet C++ que l'objet java est en miroir java « cette » référence est stockée dans l'objet C de « userData "champ

lorsqu'une autre fonction C++ renvoie un c + + Pointeur, ce pointeur est utilisé pour récupérer le userData contenant la référence à l'instance de java qui encapsule

l'instance java de l'objet original est retourné à java ...

où je suis passé la valeur Java à C++ et casted à un long printf affiche toujours la même valeur pour différentes instances !!

Répondre

0

lorsqu'une autre fonction C++ renvoie un pointeur C++, ce pointeur est utilisé pour récupérer la userData contenant la référence à l'instance de java qui encapsule ce

+1

lorsqu'une autre fonction C++ renvoie un pointeur C++, ce pointeur est utilisé pour récupérer le userData contenant la référence à l'instance java qui l'encapsule – sdf

+0

désolé cela n'a pas de sens pouvez-vous reformuler votre réponse, spécifiquement comment puis-je stocker une référence (en C++) à une instance java * spécifique * et plus tard (en java) recréer cet objet –