JNI : problème de compilation

Tony -  
 Tony -
Bonjour à tous:

voila j'ai un problème de linkage quand je compile mon programme comme suit :

g++ -ID:\Java\jdk1.5.0_02\include\win32 -ID:\Java\jdk1.5.0_
02\include test.c

test.c: undefined reference to `_imp__JNI_GetDefaultJavaVMInitArgs@4'

test.c: undefined reference to `_imp__JNI_CreateJavaVM@12'
collect2: ld returned 1 exit status

et voici le programme en question :

#include <jni.h>
#include <stdio.h>

int main(){

printf("je rentre\n");
JavaVM *jvm;
JNIEnv *env;

char classpath[1024];

JavaVMInitArgs vm_args;
JavaVMOption options[1];
options[0].optionString = "-Djava.class.path=.";
vm_args.version = JNI_VERSION_1_2;
vm_args.options = options;
vm_args.nOptions = 1;
vm_args.ignoreUnrecognized = 1;
JNI_GetDefaultJavaVMInitArgs(&vm_args);
JNI_CreateJavaVM(&jvm,(void **) &env, &vm_args);
jclass cls = env->FindClass("MonteCarloBureau");
jmethodID mid = env->GetStaticMethodID(cls,"avancerBar","(I)V");

if (mid == 0) {
printf("pas bon\n");
// Ca a planté !!!
} else {
printf("bon\n");
// Tout va bien, l'appel peut aboutir.
jint val = 50;
env->CallStaticVoidMethod(cls,mid,val);
}
printf("je sors\n");

return 0;
}

Kelk1 aurait-il la solution ?

Merci d'avance

1 réponse

Tony
 
voici la solution :

g++ -ID:\Java\jdk1.5.0_02\include\win32 -ID:\Java\jdk1.5.0_
02\include test.c D:\Java\jdk1.5.0_02\lib\libjvm.a

il faut transformer la jvm.lib en jvm.a pour que ce soit comptatible avec g++ ou gcc!!!

Pour cela il faut utiliser l'utilitaire reimp.exe avec la commande suivante:
reimp.exe jvm.lib

-> ça ne créer la librairie libjvm.a

Et après ça plus de problème de linkage !!!!!!!!!!

Tony
0