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

C++ Discussion :

comment utiliser une library C avec g++


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    3
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 3
    Par d�faut comment utiliser une library C avec g++
    salut � tous,
    j'essais de faire un truc tout bete : utiliser des fonctions d'une bibliotheque, mais voil�, je n'arrive pas � utiliser cette bibliotheque avec g++!

    en fait j'essais d'utiliser la library de cdparanoia.

    voici le petit programme que je veux compiler :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <cdda_interface.h>
    #include <cdda_paranoia.h>
     
    int main(){
    	puts("calling library function test");
    	cdrom_drive *d=NULL;
    	  d=cdda_identify(NULL,CDDA_MESSAGE_PRINTIT,NULL);
      return 0;
    }
    donc j'essais juste d'appeler une des fonctions de la bibliotheque, �a ne sert a rien, mais c'est juste pour tester l'appel de fonction

    si je nomme le fichier testParano.c et que j'essais de le compiler avec gcc de la mani�re suivante tout marche :
    gcc testParano.c -o testParano -lcdda_interface -lcdda_paranoia -lm

    �a compile, et �a s'ex�cute normalement!

    par contre si je nomme le fichier testParano.cc ou testParano.cpp et que j'essais de le compiler avec g++ (ou meme avec gcc) �a ne fonctionne pas, j'obtiens le retour suivant :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
     
    $ g++ testParano.cpp -o testParano -lcdda_interface -lcdda_paranoia -lm
    /home/user1/tmp/cc8CaYsg.o: In function `main':
    testParano.cpp:(.text+0x3c): undefined reference to `cdda_identify(char const*, int, char**)'
    collect2: ld a retourné 1 code d'état d'exécution
    j'utilise mandriva 2007 et g++ v 4.2.2

    Quelqu'un voit o� est-ce que je fais faux pas?

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    3
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 3
    Par d�faut
    C'est toujours pareil, c'est aussitot qu'on expose son probleme qu'on trouve la solution! si j'avais su j'aurais post� plus t�t

    donc en fait j'ai trouv� la solution en regardant les sources d'une autres library dont je me sert sans soucis, et j'ai d�couvert le extern "C"{}

    donc pour r�soudre mon porbl�me j'ai �dit� les headers de ma library � savoir /usr/local/include/cdda_interface.h et /usr/local/include/cdda_paranoia.h

    et dans chacuns d'entre eux, j'ai rajout� ceci en d�but de fichier :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    /*
    ** Make sure we can call this stuff from C++.
    */
    #ifdef __cplusplus
    extern "C" {
    #endif
    et ceci a la fin :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
     
     
    #ifdef __cplusplus
    }  /* End of the 'extern "C"' block */
    #endif
    Et maintenant tout marche nikel!!!

  3. #3
    Invit�(e)
    Invit�(e)
    Par d�faut
    Bonjour,

    Ne manquerait il pas un
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #ifdef __cplusplus 
    extern "C" {      
    #endif
     
    int maFonctionEnC(void);
     
    #ifdef __cplusplus 
    }
    #endif
    Dans les fichiers inclus ?

  4. #4
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    48
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 48
    Par d�faut
    Salut

    Tu peux ajouter le Extren C dans ton Header et utiliser seulement le #include "talib.h" dans ton code C++

    Pour plus d'info

    http://jlecomte.ifrance.com/c++/c++-...nd-cpp-fr.html

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    3
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 3
    Par d�faut
    Citation Envoy� par mabu Voir le message
    Bonjour,

    Ne manquerait il pas un
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #ifdef __cplusplus 
    extern "C" {      
    #endif
     
    int maFonctionEnC(void);
     
    #ifdef __cplusplus 
    }
    #endif
    Dans les fichiers inclus ?
    non, c'est bon, la fonction �tait bien d�clar�e, il me manquait simplement le extern


    Citation Envoy� par getdz Voir le message
    Salut

    Tu peux ajouter le Extren C dans ton Header et utiliser seulement le #include "talib.h" dans ton code C++

    Pour plus d'info

    http://jlecomte.ifrance.com/c++/c++-...nd-cpp-fr.html
    OUUUUAAAAhh! trop bien la doc, c'est exactement ce que j'ai recherch� pendant toute la journ�e

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 16
    Dernier message: 07/07/2009, 13h46
  2. Comment utiliser une base FireBird avec Delphi5
    Par cmali67 dans le forum Bases de donn�es
    R�ponses: 8
    Dernier message: 24/03/2009, 00h37
  3. R�ponses: 15
    Dernier message: 23/03/2009, 16h07
  4. Comment utiliser une datasource JNDI avec JDBC?
    Par KING_OF_GRACELAND dans le forum JDBC
    R�ponses: 6
    Dernier message: 08/04/2008, 18h18
  5. Comment utiliser une librarie .so (sous linux)
    Par philipina dans le forum Linux
    R�ponses: 14
    Dernier message: 20/02/2007, 13h05

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