Rechercher : dans
Par :

JNI : problème de compilation

Dernière réponse le 24 fév 2006 à 16:54:18 Tony, le 24 fév 2006 à 11:47:44 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « JNI : problème de compilation » dans :
La compilation et les modules en C et en C++ Voir Cet article a pour vocation d'introduire les notions de bases de la compilation en C et en C++ et de la programmation modulaire. Il permet de mieux comprendre les messages d'erreur du compilateur. Les notions abordées ici sont indépendantes du...
[Linux] Installer les programmes (gestion des paquets, compil) Voir************************************************************** * INSTALLER UN PROGRAMME SOUS LINUX : **** * LA GESTION DES PAQUETS ou COMMENT SE SIMPLIFIER LA VIE * * UN EXEMPLE DE COMPILATION POUR SE FAIRE LA MAIN ...
Compiler du C sous Linux/UNIX VoirSous Linux, le compilateur de C est gcc. Il est installé de base sur plusieurs distributions, mais sur Debian (et celles qui en découlent) il faudra l'installer (aptitude install gcc). gcc Syntaxe de GCC gcc Tout d'abord, il faut savoir...
Compiler un programme en C avec Dev C++ sous Vista VoirIl est très probable que vous ayez des problèmes lors de la compilation d'une source C sous Vista avec Dev C++. Solution rapide de secours: le compilateur g++ Voici une astuce pour Dev-Cpp : Aller dans "Outils" -> "Options du compilateur" puis...
Télécharger Code::Blocks Studio VoirCode::Blocks est un IDE multi-plateforme (Linux, Mac et Windows) entièrement codé en C++. Code::Blocks est basé sur un système de plugins, ce qui permet de le faire évoluer très facilement sans devoir le recompiler. La compilation, qui peut se...
Télécharger Delphi 6 Edition personnelle VoirLa société Borland (Inprise) a mis à disposition gratuitement, pour un usage non-commercial, la version 6 de son environnement de développement intégré (EDI). Celui-ci possède un compilateur natif et de puissants outils permettant de développer...
Télécharger Compilateur Scriptol PHP VoirNombreux sont les langage de programmation qui existe depuis la création de l’informatique. Ils ont tous leur points faibles et leurs avantages, mais ceux qui est sûr, c’est qu’ils ne sont pas toujours facile à appréhender. Scriptol...
Linux - Compilation du noyau (Kernel) VoirCompilation du Kernel Cet article a pour but de présenter la compilation du noyau (ou kernel) sous Linux. Les explications suivantes sont basées sur la version 2.4.20 du kernel, la dernière en date au moment de l'écriture de l'article (mars...
LaTeX - Premiers pas VoirCompilation d'un fichier LaTeX LaTeX est un langage compilé (on part d'un fichier source pour arriver à un fichier cible). La source est généralement un fichier texte dont l'extension est .tex et la cible un fichier dvi, postscript ou pdf. La...

1

 Tony, le 24 fév 2006 à 16:54:18

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

Répondre à Tony