Creation dll (JNI)

Résolu
didoux95 Messages postés 845 Date d'inscription mardi 25 avril 2006 Statut Membre Dernière intervention 1 août 2017 - 25 mars 2007 à 16:23
wilkom2009 Messages postés 49 Date d'inscription jeudi 8 avril 2010 Statut Membre Dernière intervention 7 août 2012 - 13 mai 2011 à 12:03
Bonjour a tous.
J'ai un gros soucis de compilation:
je vien de me mettre au JNI. j'ai creer deux fichier (HelloWorld.h et HelloWorld.c). je n'arrive pas a obtenir de dll a partir de ces deux dernier.
Voila les codes:
Partie JAVA
public class HelloWorld {
 public native void displayHelloWorld()
 static {
    System.loadLibrary("hello");
 }
 public static void main(String[] args) {
    new HelloWorld().displayHelloWorld();
 }
}

Fichier header (.h) generer par "javah"
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class HelloWorld */



#ifndef _Included_HelloWorld
#define _Included_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     HelloWorld
 * Method:    displayHelloWorld
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld
  (JNIEnv *, jobject);



#ifdef __cplusplus
}
#endif
#endif

Fichier c
//#include <StubPreamble.h>
#include "HelloWorld.h"
#include <stdio.h>



void HelloWorld_displayHelloWorld(struct HHelloWorld *this) {
    printf("Hello World!\n");
    return;
}


Merci de votre aide.

8 réponses

Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
25 mars 2007 à 17:48
Salut:

Il faut que tu définis certains flags de compilation.

Ceci est un cours fabuleux il montre comment démarrer avec JNI en utilisant DevC++.

http://www.dil.univ-mrs.fr/~garreta/JavaMINT/divers/SurJNI.html

Bonne chance.


________________________________________________________________________________
A.B. : 
"Dieu nous donne des mains, mais il ne bâtit pas les ponts"
3
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
25 mars 2007 à 17:51
Salut,

faut aussi mettre les repertoires
<jdk>/include
<jdk>/include/<os name>

dans le path include de ton ide (ou directement dans la ligne de compilation) pour que ton compilo puisse trouver la référence sur le fichier jni.h

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
3
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
25 mars 2007 à 17:26
Salut,

déjà pour creer une dll sous windows il faut un main, ensuite tu ne defini pas la méthode du header donc ça rique pas de fonctionner

Fichier c
//#include <StubPreamble.h>
#include "HelloWorld.h"
#include <stdio.h>

#ifdef WIN32
    #include <window.h>
   
    bool WINAPI DllMain(HINSTANCE hinstDll, DWORD fdwReason, LPVOID lpvReserved){
        return TRUE;
    }
#endif
/*
 * Class:     HelloWorld
 * Method:    displayHelloWorld
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld  (JNIEnv *env, jobject obj){
    printf("Hello World!\n");
    return;
}

tu sais pour faire du jni faut au minimum maitriser les bases du C/C++ ensuite je te suggère de lire le tutos de sun sur JNI (ICI)

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
25 mars 2007 à 17:27
Salut,

j'ai oublié dans le fichier C le return de la méthde display ne sert à rien.

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
25 mars 2007 à 17:28
Salut:

Bon mon ami, je te conseille d'utiliser DevC++ c'est graduit.

De plus la création d'une DLL avec cet IDE est simple.

________________________________________________________________________________
A.B. : 
"Dieu nous donne des mains, mais il ne bâtit pas les ponts
0
didoux95 Messages postés 845 Date d'inscription mardi 25 avril 2006 Statut Membre Dernière intervention 1 août 2017 2
25 mars 2007 à 17:42
Bonjour.
merci pour la "correction", je l'avais pas vu; ainsi que pour le tuto.
L'IDE que j'utilise est Dev c++. Seulement, il m'indique une erreur au niveau de #include "HelloWorld.h"

merci.
0
didoux95 Messages postés 845 Date d'inscription mardi 25 avril 2006 Statut Membre Dernière intervention 1 août 2017 2
25 mars 2007 à 18:00
merci.
ca marche.
0
wilkom2009 Messages postés 49 Date d'inscription jeudi 8 avril 2010 Statut Membre Dernière intervention 7 août 2012
13 mai 2011 à 12:03
Salut,
Je suis dans la merde les gars avec JNI. Pour moi, déjà le code de génération me pose problème, voici la ligne de commande DOS:
cl -Im:C:\java\jdk1.6.0_24\include -Im:C:\java\jdk1.6.0_24\include\win32 -LD HelloWorld.cpp -FeHelloWorldImp.dll;
J'ai comme message d'erreur:
<<'cl' n'est pas reconnu en tant que commande interne ou externe, un programme exécutable ou un fichier commande>>
Que faut-il faire?
0
Rejoignez-nous