Creation dll (JNI) [Résolu]

Messages postés
845
Date d'inscription
mardi 25 avril 2006
Dernière intervention
1 août 2017
- - Dernière réponse : wilkom2009
Messages postés
50
Date d'inscription
jeudi 8 avril 2010
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.
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Dernière intervention
26 juillet 2013
3
Merci
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"

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 97 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Ombitious_Developper
Messages postés
5309
Date d'inscription
dimanche 4 mai 2003
Dernière intervention
18 décembre 2018
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 97 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Twinuts
Messages postés
5309
Date d'inscription
dimanche 4 mai 2003
Dernière intervention
18 décembre 2018
0
Merci
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
Commenter la réponse de Twinuts
Messages postés
5309
Date d'inscription
dimanche 4 mai 2003
Dernière intervention
18 décembre 2018
0
Merci
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
Commenter la réponse de Twinuts
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Dernière intervention
26 juillet 2013
0
Merci
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
Commenter la réponse de Ombitious_Developper
Messages postés
845
Date d'inscription
mardi 25 avril 2006
Dernière intervention
1 août 2017
0
Merci
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.
Commenter la réponse de didoux95
Messages postés
845
Date d'inscription
mardi 25 avril 2006
Dernière intervention
1 août 2017
0
Merci
merci.
ca marche.
Commenter la réponse de didoux95
Messages postés
50
Date d'inscription
jeudi 8 avril 2010
Dernière intervention
7 août 2012
0
Merci
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?
Commenter la réponse de wilkom2009

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.