if(env->ExceptionOccurred()){//test si on a pas declanche une exception
env->ExceptionDescribe();//si oui on l'affiche
env->ExceptionClear();//on release la stack d'exception
return NULL;//pas la peine de continuer
}
//on release le tab en C
delete [] buff;
//on retourn la chaine java contenant le result de la recherche
return jret;
}
voila tu creer un DLL qui porte le nom JWin (sinon pense à modifier le
nom dans le code java), tu la met a coté de ton .class et tu run le le
code java(j'ai testé ça fonctionne).
voilou voilou
------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 28 juil. 2006 à 10:19
Salut,
tu ne peux y acceder sans passer par un wrapper JNI et si elle sont
present et que tu n'en est pas l'autreur il faut qu'appartir de ta lib
jni tu l'as load (en C/C++) si tu en es l'auteur tu peux encapsuler ton
wrapper dedans.
Pour loader une fonction d'une dll sous windows c'est assez simple tu dois connaitre 2 choses
1 son nom
2 la signature de la fonction
exemple dans le code que j'ai posté je désir utiliser la fonction JAWT_GetAWT de la dll jawt.dll
cette fonction à la signature suivante
jboolean -> ce quelle retourne
JAWT_GetAWT -> son nom
JNIEnv* env -> son premier argument
JAWT* awt -> son deauxieme argument
pour la loader je procède ainsi
//definition d'un type correspondant à la signature de la fonction
/!\ N'oublie pas de relacher la dll qd tu n'en as plus besoin
FreeLibrary(hjawt);
hjawt = NULL;
mJAWT_GetAWT = NULL;
voilou si tu as des dificulté de comprehension je t'encourage vivement
d'aller sur cppfrance pour poser ta question sachant que ton problème
sort du context java
------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."
foulla002
Messages postés47Date d'inscriptionmardi 4 juillet 2006StatutMembreDernière intervention 5 septembre 2006 28 juil. 2006 à 10:55
salut
si c'est le cas c'est quoi ce que je vient comme programme
public class GetEnv
{
static public void main(String[] arg)
{
System.out.println("PATH = " + getEnv("path"));
System.out.println("CLASSPATH = " + getEnv("classpath"));
}
static String getEnv(String name)
{
StringBuffer value = new StringBuffer(128);
int chars = GetEnvironmentVariable(name, value, value.capacity());