TOUT -|- TOUT sur le visuel -|- TOUT sur la logistique
From: Cédric LE CREN <clecren@capgemini.fr>
To: <java@u-strasbg.fr>
Subject: accéder à une dll en java
Date sent: Wed, 8 Nov 2000 15:39:31 +0100
Send reply to: java@u-strasbg.fr
Voilà, j' utilise la JNI pour accéder à une dll en Java.
Ma dll est simple, elle doit juste affichée hello world
Mon code java est :
package interface;
class HelloWorld {
private EH eh;
public native void displayHelloWorld();
static {
System.loadLibrary("hello");
}
public static void main(String[] args) {
new HelloWorld().displayHelloWorld();
}
}
Jecompile ma classe puis fais un javah -jni HelloWorld qui me crée un
fichier HelloWorld.h J'implémente ensuite ma dll de la façon suivante :
#include <jni.h>
#include "HelloWorld.h"
#include <stdio.h>
JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld
(JNIEnv *env, jobject obj)
{
printf("Hello world!\n");
return ;
}
en la compilant, j'obtient une dll s'appelant hello.dll que je copie dans
Winnt\system32\ pour être sur que le systeme la trouve
et la en executant mon code java j'obtiens tout le temps l'exception
suivante :
java.lang.UnsatisfiedLinkError: displayHelloWorld
at interfacer.HelloWorld.main(HelloWorld.java:26)
Et puis as là, je comprends plus, il n'arrive pas à trouver cette dll
Quelqu'un a-t-il déjà rencontré ce problème ?
Ps : j'utilise JDK 1.2.2 et j'ai essayé aussi sur JDK1.1.8 mais même
résultat
Date sent: Wed, 08 Nov 2000 15:51:15 +0100
From: Alain Balay <Alain.Balay@cisi.cnes.fr>
Organization: CS-SI
To: java@u-strasbg.fr
Subject: Re: accéder à une dll en java
Send reply to: java@u-strasbg.fr
nous , notre dll, on la mise dans le repertoire ou on lance notre appli et
il la trouve bien. Mais normalement , il devrait effectivement aussi aller
la chercher dans les rep système !
> Cédric LE CREN a écrit :
>
> Voilà, j' utilise la JNI pour accéder à une dll en Java.
>
> Ma dll est simple, elle doit juste affichée hello world
>
> Mon code java est :
>
> package interface;
> class HelloWorld {
>
> private EH eh;
> public native void displayHelloWorld();
>
> static {
> System.loadLibrary("hello");
> }
>
> public static void main(String[] args) {
> new HelloWorld().displayHelloWorld();
> }
> }
>
> Jecompile ma classe puis fais un javah -jni HelloWorld qui me crée un
> fichier HelloWorld.h J'implémente ensuite ma dll de la façon suivante :
>
> #include <jni.h>
> #include "HelloWorld.h"
> #include <stdio.h>
> JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld
> (JNIEnv *env, jobject obj)
> {
> printf("Hello world!\n");
> return ;
> }
>
> en la compilant, j'obtient une dll s'appelant hello.dll que je copie
> dans Winnt\system32\ pour être sur que le systeme la trouve
>
> et la en executant mon code java j'obtiens tout le temps l'exception
> suivante :
>
> java.lang.UnsatisfiedLinkError: displayHelloWorld
> at interfacer.HelloWorld.main(HelloWorld.java:26)
>
> Et puis as là, je comprends plus, il n'arrive pas à trouver cette dll
>
> Quelqu'un a-t-il déjà rencontré ce problème ?
>
> Ps : j'utilise JDK 1.2.2 et j'ai essayé aussi sur JDK1.1.8 mais même
> résultat
From: Cédric LE CREN <clecren@capgemini.fr>
To: <java@u-strasbg.fr>
Subject: Re: accéder à une dll en java
Date sent: Wed, 8 Nov 2000 16:23:32 +0100
Send reply to: java@u-strasbg.fr
Ca y est je viens d'avoir la solution, Pour ceux qui pourrait rencontré
le problème, voilà la solution
Dans mon code java j'avais défini le package interface;
En fait il faut le redéfinir dans le code C/C++
JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld (JNIEnv *env,
jobject obj) devient JNIEXPORT void JNICALL
Java_interface_HelloWorld_displayHelloWorld (JNIEnv *env, jobject obj)
Voilà, j' utilise la JNI pour accéder à une dll en Java.
Ma dll est simple, elle doit juste affichée hello world
Mon code java est :
package interface;
class HelloWorld {
private EH eh;
public native void displayHelloWorld();
static {
System.loadLibrary("hello");
}
public static void main(String[] args) {
new HelloWorld().displayHelloWorld();
}
}
Jecompile ma classe puis fais un javah -jni HelloWorld qui me crée un
fichier HelloWorld.h J'implémente ensuite ma dll de la façon suivante :
#include <jni.h>
#include "HelloWorld.h"
#include <stdio.h>
JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld
(JNIEnv *env, jobject obj)
{
printf("Hello world!\n");
return ;
}
en la compilant, j'obtient une dll s'appelant hello.dll que je copie
dans Winnt\system32\ pour être sur que le systeme la trouve
et la en executant mon code java j'obtiens tout le temps l'exception
suivante :
java.lang.UnsatisfiedLinkError: displayHelloWorld
at interfacer.HelloWorld.main(HelloWorld.java:26)
Et puis as là, je comprends plus, il n'arrive pas à trouver cette dll
Quelqu'un a-t-il déjà rencontré ce problème ?
Ps : j'utilise JDK 1.2.2 et j'ai essayé aussi sur JDK1.1.8 mais même
résultat