IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

comment je charge deux librairies partagées


Sujet :

Java

  1. #1
    Candidat au Club
    Inscrit en
    Octobre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 10
    Points : 2
    Points
    2
    Par défaut comment je charge deux librairies partagées
    Bonjour tous le monde,
    Je veux utiliser JNA pour faire mon wrapper java,
    Pour faire ceci, il faut chargé la librairie partagée que j'ai généré quand j'ai compilé mon code C, 'libMy-lib1.so'.

    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    import com.sun.jna.Library;
    import com.sun.jna.Native;
    import com.sun.jna.Platform;
    import com.sun.jna.Pointer;
     
     public class Test {
        public interface CLibrary extends Library {
       CLibrary INSTANCE = (CLibrary)  Native.loadLibrary(("My-lib1"), CLibrary.class);
        void  Example (String  fname , int  max_size);
        }
     
        public static void main(String[] args) {
        String  a ="";
        int  b=0;
        CLibrary.INSTANCE.Example(a,b);
        }
     }
    mais si je compile ce code voici le message d'ereur qui sera affiché:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'My-lib1': libMy-lib1.so: undefined symbol: WFile
            at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:127)
            at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:170)
            at com.sun.jna.Library$Handler.<init>(Library.java:123)
            at com.sun.jna.Native.loadLibrary(Native.java:255)
            at com.sun.jna.Native.loadLibrary(Native.java:241)
            at My-lib1s$CLibrary.<clinit>(Test.java:34)
            at My-lib1.main(Test.java:86)
    Je pense que j'ai besoin aussi de charger une autre librairie, càd charger "My-lib1" et "My-lib2"
    Svp, quelqu'un a une idéé sur comment faire pour que je puisse travaillé avec les deux librairies?
    Merci d'avance.

  2. #2
    Membre expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 011
    Points : 1 375
    Points
    1 375
    Par défaut
    As-tu essayé en mettant également l'autre librairie dans java.library.path ? Je pense qu'elle devrait se charger automatiquement lorsque ta librairie en aura besoin.

  3. #3
    Candidat au Club
    Inscrit en
    Octobre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    Merci bien pour votre réponse,

    Svp vous pouvez me dire comment je peux faire ceci, je travail sous Ubuntu linux.
    Merci.

  4. #4
    Membre expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 011
    Points : 1 375
    Points
    1 375
    Par défaut
    Tu exécutes ton programme en passant à java l'argument -D pour définir oú aller chercher les librairies
    java -Djava.library.path="/opt/jdk/lib"

  5. #5
    Candidat au Club
    Inscrit en
    Octobre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    Merci pour la réponse,
    J'ai fait cette commande:
    java -Djava.library.path="/opt/jdk/lib" -cp .:jna.jar wfile_bless
    J'ai fait le chemin de ma librairie, mais toujour le même probleme.

  6. #6
    Membre expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 011
    Points : 1 375
    Points
    1 375
    Par défaut
    /opt/jdk/lib c'est juste un exemple .. Toi il faut que tu mettes le chemin vers tes librairies!!

  7. #7
    Candidat au Club
    Inscrit en
    Octobre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    biensûr, c'est ce que j'ai fait.

Discussions similaires

  1. Comment vérifier si une librairie est chargée ?
    Par mica94 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/06/2014, 17h24
  2. comment appeler une fonction de librairie partagée
    Par jean-michel-78 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 21/05/2011, 18h51
  3. Réponses: 2
    Dernier message: 16/04/2008, 22h58
  4. Réponses: 3
    Dernier message: 23/03/2008, 13h23
  5. Réponses: 1
    Dernier message: 26/07/2005, 08h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo