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

Visual C++ Discussion :

Integration d'une librairie C dans un programme C++


Sujet :

Visual C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de kitsune
    Inscrit en
    Décembre 2004
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Décembre 2004
    Messages : 341
    Par défaut Integration d'une librairie C dans un programme C++
    Bonjour,

    Je ne sais pas trop dans quel forum poster vu que j'ai du mal a cerner la nature de mon probleme...
    Donc voila j'utilise Visual Studio C++ et j'aimerai integrer a mon projet une librairie ecrite en C.
    J'ai donc inclu le fichier lib et les headers.

    Quand je cree une variable du type appartenant a cette librairie, ca compile mais des que je veux appeler une fonction je recois un "unresolved external symbol" au moment de l'edition des liens.

    Je ne vois pas quel est le probleme, est-ce qu'il y a quelque chose de special a faire pour integrer une librairie C a un programme C++ ? Ou ca vient d'ailleurs ?

    Merci.

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    voir faq ,tes fonctions doivent utiliser extern "C":
    http://cpp.developpez.com/faq/vc/?page=DLL#MakeDynDll

  3. #3
    Membre éclairé Avatar de kitsune
    Inscrit en
    Décembre 2004
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Décembre 2004
    Messages : 341
    Par défaut
    Oui j'avais deja essaye mais j'ai l'impression que c'est plus un probleme de linkage... Quand je rajoute extern "C" il me dit "linkage specification contradicts earlier specification for...".

    Je ne sais pas s'il y a un rapport mais c'est une librairie statique. J'ai recupere les sources et genere le fichier lib a partir de celles-ci.
    Ensuite je l'ai lie a mon projet mais il me manque peut-etre un truc...

    EDIT: apres un aprem dessus je vais pas tarder a devenir dingue ^^"
    donc a priori c'est un probleme de liens relatif aux fonctions de la librairie que je veux utiliser... le extern "C" je dois le mettre ou exactement ?

    merci...

  4. #4
    Membre éclairé Avatar de kitsune
    Inscrit en
    Décembre 2004
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Décembre 2004
    Messages : 341
    Par défaut
    Personne n'a une petite idee ?

  5. #5
    Membre éclairé Avatar de kitsune
    Inscrit en
    Décembre 2004
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Décembre 2004
    Messages : 341
    Par défaut
    Bon j'ai un peu avance dans mon bazar.
    J'ai ajoute en librairie ignoree : libcmt, dans code generation /Mtd et j'ai passe l'option Use of MFC a "use MFC in a Static Library".
    Du coup je n'ai plus d'erreur avec le mot-clef external "C".

    Par contre toujours des "unresolved external symbol" sur les fonctions que j'appelle. Quand je mets external "C" { }; autour de mon include du header de la librairie il m'en resoud un seul.
    Quand je mets ce external "C" autour des declarations de fonctions ca ne change rien non plus... Ca marche seulement pour une des fonctions que j'appelle...

  6. #6
    Membre éclairé Avatar de kitsune
    Inscrit en
    Décembre 2004
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Décembre 2004
    Messages : 341
    Par défaut
    Bon ben finalement je suis venue a bout de mon probleme.
    Je n'ai toujours pas trouve comment integrer la librairie TAUCS a mon projet mais j'ai trouve une solution qui marche.

    Donc pour ceux qui ont le meme probleme sous Visual Studio avec TAUCS, voici un lien interessant: http://www.cs.tau.ac.il/~lgavish/CG07a/index.htm

    Il suffit d'ajouter le projet propose a votre solution, de specifier les options /Mtd pour le debug et /Mt pour le release dans les 2 projets (taucs et le votre), linker taucs.lib, ajouter le repertoire de cette lib (taucs/debug) et ignorer libcmt.

    Voila, au cas ou ca peut interesser des gens...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Appel d'une dll (c++) dans un programme c++
    Par cout dans le forum C++
    Réponses: 2
    Dernier message: 01/06/2006, 14h52
  2. integration d'une image SVG a un programme JAVA
    Par Mardagg dans le forum Interfaces Graphiques en Java
    Réponses: 2
    Dernier message: 14/04/2006, 16h42
  3. Réponses: 2
    Dernier message: 06/04/2006, 17h44
  4. Integration d'une page html dans un mail
    Par mael94420 dans le forum ASP
    Réponses: 7
    Dernier message: 13/12/2005, 08h47
  5. Réponses: 2
    Dernier message: 24/06/2003, 20h31

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