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

Contribuez C++ Discussion :

compilation g++, question


Sujet :

Contribuez C++

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 47
    Points : 24
    Points
    24
    Par défaut compilation g++, question
    Bonjour,

    j'ai écris une librairie en c++ avec des classes aux fonctions privées et publiques.
    Des fonctions privées font appel à des librairies. Et les fonctions publique sont une sorte de wrapper aux fonctions privées
    La compilation de la librairie se passe sans problème
    g++ -fPIC....
    g++ shared, soname....


    Mais lorsque j'essaye de compiler un programme utilisant ma librarie,
    cela ne fonctionnera que si je lui indique ou trouver les librairies qui sont utilisées que dans les fonctions privées de mes classes....

    Comment faire du coup pour faire en sorte que seulement les fonctions publique soit accessible, depuis un programme tier ?

    L'utilisation de "extern C" aiderai elle ? je ne l'utilise pas car le programme appelant est aussi en c++

    je précise que les structures/objet spécifiques aux autres librairies ne sont jamais utilisées dans les méthodes publiques....


    merci pour vos réponses

  2. #2
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Quand tu batis ta bibliotheque, indiques les bibliotheques dont elle depend avec -l.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 47
    Points : 24
    Points
    24
    Par défaut
    Bonjour,

    C'est en effet ce que je fais, lorsque je batis ma librairie j'indique les librairies nécessaire avec le -l

    Ce que j'aimerais c'est que lorsque je construis mon appli utilisant ma librairie je n'ai pas besoin d'indiquer le -l des autres librairies

  4. #4
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Bizarre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $ g++ -fPIC -c lib1.cpp
    $ g++ -fPIC -c lib2.cpp
    $ g++ -c main.cpp
    $ g++ -shared -o liblib2.so lib2.o
    $ g++ -shared -o liblib1.so lib1.o
    $ g++ -o main main.o -L`pwd` -llib1
    liblib1.so: undefined reference to `f2()'
    collect2: ld returned 1 exit status
    $ g++ -shared -o liblib1.so lib1.o -L`pwd` -llib2
    $ g++ -o main main.o -L`pwd` -llib1
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  5. #5
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 47
    Points : 24
    Points
    24
    Par défaut
    Pourquoi

    $ g++ -shared -o liblib1.so lib1.o

    te compiles bien alors qu'elle devrait dépendre de liblib2 et donc devrais nécessiter -llib2 ?

  6. #6
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 47
    Points : 24
    Points
    24
    Par défaut
    Maybe my problem is a little bit different...it's more like this :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $ g++ -fPIC -c lib1.cpp
    $ g++ -c main.cpp
    $ g++ -shared -o liblib1.so lib1.o -L`pwd` -llib2
    $ g++ -o main main.o -L`pwd` -llib1
    liblib1.so: undefined reference to `struct specific_to_lib2'
    collect2: ld returned 1 exit status
    $ g++ -o main main.o -L`pwd` -llib1 -llib2 -> fine

  7. #7
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Tu peux extraire un exemple complet? Je ne me souviens pas avoir vu une erreur du genre: undefined reference to `struct specific_to_lib2'
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  8. #8
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 47
    Points : 24
    Points
    24
    Par défaut
    Le message n'indique pas d'erreur sur `struct specific_to_lib2'
    mais sur `tada_a_struct_from_lib2'
    Je vous colle l'erreur exacte demain si vous pensez que cela change quelque chose

    Une chose que je ne comprends pas très bien : sur windows on définit les méthodes/classes à exporter avec _declspec(dllexport)
    pourquoi n'est il pas possible de faire la même chose avec g++ ?

  9. #9
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 47
    Points : 24
    Points
    24
    Par défaut
    Yes it says

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    undefined reference to `specific_structure_from_lib2'

  10. #10
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Aucune idee. Je te suggere a nouveau d'extraire un exemple minimal (ou tu as enleve tout ce qui n'est pas necessaire pour reproduire le probleme) et complet (ou tu donnes explicitement tout ce qui est necessaire pour reproduire le probleme) et de nous le donner.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

Discussions similaires

  1. [OCILIB] Compilation et question
    Par yupa dans le forum Interfaces de programmation
    Réponses: 12
    Dernier message: 30/09/2008, 14h58
  2. erreur de compilation et questions diverses
    Par Jonkile dans le forum C
    Réponses: 7
    Dernier message: 05/01/2008, 18h25
  3. [Tomcat] question sur la compilation des Jsp
    Par Invité dans le forum Tomcat et TomEE
    Réponses: 9
    Dernier message: 01/06/2006, 10h29
  4. [langage] Question débutant compilation PERL
    Par sebbyoguard dans le forum Langage
    Réponses: 5
    Dernier message: 04/09/2004, 19h39
  5. question sur les erreurs de compilation
    Par vince3320 dans le forum C
    Réponses: 5
    Dernier message: 19/04/2004, 11h34

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