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

Interfaçage autre langage Python Discussion :

[SWIG]Problème linking libraries .so multiples


Sujet :

Interfaçage autre langage Python

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 44
    Points : 26
    Points
    26
    Par défaut [SWIG]Problème linking libraries .so multiples
    Bonjour à tous

    J'ai un petit souci avec le wrapping Swig (1.3.40) d'une application C++ sous Linux (RedHat).

    En bref, j'ai trois "modules" c++ dont un que je souhaite interfacer en python.

    J'arrive à tout bien compiler sans faire de linking à aucun moment (option -c dans ma ligne de compil g++) sauf lors de la génération du main.cpp de test.
    Tout semble se dérouler sans accroc, j'obtiens bien:
    Lib1.so, Lib2.so, Lib3.so (Lib3 contenant les éléments "wrappés").

    Lorsque je lance l'exécutable c++ généré, tout fonctionne.
    Par contre, un fichier .py bidon qui utilise cette même library wrappée... me lève un "Undefined reference" vis à vis d'une des deux autres libraries .so générées (mais non wrappées).

    Il me manque visiblement une information de liaison entre ces libraries pour son utilisation en python. Je suppose que je n'ai pas le problème avec la version C++ parce que je spécifie les liaisons lors de la génération de l'exécutable (-L/path/libs....).

    Donc.... j'ai fait quelques tests, dont celui de mettre toutes mes sources dans le même répertoire pour ne générer qu'une seule library (sans changer aucune option)... et bien cela fonctionne bien y compris en python!

    Donc ma question est: comment indiquer à Python les liens de Lib3.so vers les deux autres? Et ainsi conserver mes trois modules séparés.

    Merci à vous

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Août 2007
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Août 2007
    Messages : 190
    Points : 219
    Points
    219
    Par défaut
    Salut,

    Pour régler ton problème il suffit juste de préciser lors du link de Lib3.so que cette bibliothèque dépend de Lib1.so et de Lib2.so.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ld object1.o object2.o ... -L path/vers/Lib1.so -L path/vers/Lib2.so -llib1 -llib2 -o Lib3.so

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 44
    Points : 26
    Points
    26
    Par défaut
    Merci pour cette réponse et effectivement j'avais fait quelques tests en ce sens qui ont confirmés tes propos

    En gros, vu qu'il n'y a pas de makefile final pour généré un exécutable Python (comme je peux le faire en c++). On ne peut pas se passer de l'édition de lien au moment de la génération de la bibliothèque wrappées avec SWIG!

    Merci!

Discussions similaires

  1. Problème sur les selects multiples
    Par Nag_Champa dans le forum Langage
    Réponses: 4
    Dernier message: 15/12/2006, 16h02
  2. Réponses: 4
    Dernier message: 07/07/2006, 09h00
  3. Problème avec un "select multiple" et POST
    Par crazydiver_e2 dans le forum Langage
    Réponses: 2
    Dernier message: 09/06/2006, 15h54
  4. Problème tri tutoriel selection multiple
    Par qbihlmaier dans le forum Access
    Réponses: 24
    Dernier message: 14/03/2006, 11h24
  5. Problème de la selection multiple
    Par Muushi dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 05/10/2005, 02h53

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