Accueil de l'archive Service proposé par Hervé AGNOUX

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

C'est fini ! Retour à l'accueil de la pseudo-archive