Creer une instance d'Objet C++ dans JNI - Java - Programmation
Marsh Posté le 03-11-2003 à 14:20:41
Citation : #include "uk_ac_wmin_cpc_madcityc_impl_MadCityCImpl.h" |
rassures moi, t'as l'autocompletion dans ton ide ?
vu que ton madcity est declaré en local, il est detruit a la fin de la fonction, donc fodrait voir ailleurs
Marsh Posté le 03-11-2003 à 14:22:51
scool36 a écrit : |
Fais-toi embaucher chez Sun et refais tout JNI
Marsh Posté le 03-11-2003 à 14:29:09
Mais est-ce que c'est la bonne facon de creer un objet C++ dans JNI????
Quelles sont les autres possibilites??
Merci
Marsh Posté le 03-11-2003 à 18:01:39
Citation : |
Ben apparement y a une reference local a l'objet dans JNI qui doit etre supprime, "meme si l'objet est declare en local."
Comme par exemple dans :
str = (*env)->NewStringUTF("hello" );
Marsh Posté le 03-11-2003 à 18:05:15
Suite du message precedent :
Apres avoir fait par exemple
str = (*env)->NewStringUTF("hello" );
il apparait qu'il faut faire ca
(*env)->DeleteLocalRef(env, str);
Mais comme moi je cree mon objet "bizarrement" sans utiliser "env", je vois pas comment je peux detruire la reference local a l'objet.
Desole pour le message en deux partis.
Marsh Posté le 03-11-2003 à 14:09:45
Bonjour,
J'aimerai connaitre le moyen "propre" de creer une instance d'objet C++ dans une fonction JNI.
Ce serat peut etre plus clair avec l'exemple (ci-dessous, c'est la facon "pas terrible", que j'utilise pour creer mon objet MadCity (qui est stocke dans "GT3MadCity.h" ), l'utiliser,et renvoyer le resultat de l'execution) :
#include <iostream>
#include "uk_ac_wmin_cpc_madcityc_impl_MadCityCImpl.h"
#include "GT3MadCity.h"
JNIEXPORT jint JNICALL Java_uk_ac_wmin_cpc_madcityc_impl_MadCityCImpl_MadCityS(J
NIEnv *, jclass, jint pied) {
MadCity MC;
MC.run_MadCity(pied);
return(MC.cartotal);
}
Cette methode marche, mais apparemment grignotte de la memoire. L'instance creer n'est pas detruite et ca bouffe de la memoire.
Donc ma question est : comment faire la meme chose, tout en detruisant l'instance cree...
---------------
La meilleure facon d'en apprendre toujours plus, c'est de ne pas retenir ce qu'on nous dit.