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 :

Problème d'édition de lien : mélange C / C++


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut Problème d'édition de lien : mélange C / C++
    Hello,

    J'utilise dans un code C++ une bibliothèque externe compilée en C.
    Dans le .h, j'ai bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #if defined(__cplusplus)
        extern "C"
    {
    ...
    }
    Et j'ai plein d'erreur à l'édition de lien... Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    error LNK2001: symbole externe non résolu __imp__free
    error LNK2001: symbole externe non résolu @__security_check_cookie@4
    Bref, que des choses réjouissantes.

    J'ai rajouté autour du .h un , mais ça ne change rien.

    Il y a quelque chose d'autre à faire ? Genre changer les options de compilation (je suis sous Visual C++ 2010) ?

    Merci.

  2. #2
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Il faut le extern C mais il faut aussi se lier avec la bibliothèque ... (le fichier .lib de la bibliothèque).

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut
    Citation Envoyé par Melem Voir le message
    Il faut le extern C mais il faut aussi se lier avec la bibliothèque ... (le fichier .lib de la bibliothèque).


    C'est le cas, je pense, puisque j'ai configuré mon projet pour, et que le message d'erreur se réfère à des fichiers objets ayant construit le fichier .lib référencé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sisl.lib(s1936.obj) : error LNK2001: symbole externe non résolu __imp__free
    sisl.lib est le fichier bibliothèque que je veux utiliser.

    Ligne de commande résultante (pour Visual C++) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /OUT:"C:\Sintef\sisl-4.5.0\examples\Debug\example10.exe" /INCREMENTAL /NOLOGO /LIBPATH:"C:\Sintef\sisl-4.5.0\Visual\Release" "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" "sisl.lib" /NODEFAULTLIB /MANIFEST /ManifestFile:"Debug\example10.exe.intermediate.manifest" /ALLOWISOLATION /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"C:\Sintef\sisl-4.5.0\examples\Debug\example10.pdb" /SUBSYSTEM:CONSOLE /PGD:"C:\Sintef\sisl-4.5.0\examples\Debug\example10.pgd" /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X86 /ERRORREPORT:QUEUE
    Par ailleurs, il m'a été rajouté au projet tout un tas de bibliothèques (ex : winspool.lib), alors que je fais juste un bête programme en ligne de commande. Ai-je donc besoin de toutes ces bibliothèques ?

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut
    Bon, j'ai des soucis en Debug, mais pas en Release...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1>streaming.lib(GoReadWrite.obj) : error LNK2038: discordance détectée pour '_ITERATOR_DEBUG_LEVEL'*: la valeur '0' ne correspond pas à la valeur '2' in example10.obj
    Je cherche à compiler/lier en debug un exécutable utilisant streaming.lib compilé en release.

    Y'a rien de choquant là-dedans, non ?

    edit :
    J'ai trouvé pourquoi. Un projet en debug ne peut pas faire appel à une lib en release si celle-ci est issue d'un projet de la même solution.

    Il me reste encore une autre erreur, mais je l'aurai, un jour, je l'aurai...

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut
    Bon, par rapport à mon souci initial, le problème était que la lib importée utilisait les versions release de MSVCRT, alors que mon programme appelant la lib, étant en mode debug, voulait appeler MSVCRT en mode debug. J'avais rajouté à l'édition de liens le commutateur /NODEFAULTLIB, d'où la bordée d'injures envoyée par l'éditeur de lien.

    Finalement, j'ai rajouté le commutateur /NODEFAULTLIB:MSVRT.lib, et ça va beaucoup mieux.

    Propriétés de configuration > Éditeur de liens > entrée > Bibliothèques par défaut spécifiques ignorées : MSVCRT.lib

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

Discussions similaires

  1. [MASM32] Problème à l'édition de liens
    Par theShin dans le forum x86 32-bits / 64-bits
    Réponses: 4
    Dernier message: 01/03/2007, 21h38
  2. Problème d'édition de lien
    Par Kodamas dans le forum Autres éditeurs
    Réponses: 10
    Dernier message: 05/06/2006, 13h50
  3. [g++] Problème d'édition de liens
    Par glKabuto dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 31/05/2006, 19h10
  4. [Dev-C++] Problème d'édition des liens
    Par shura dans le forum EDI
    Réponses: 5
    Dernier message: 30/08/2005, 09h35
  5. Problème à l'édition des liens avec BCC55 et Xerces
    Par ShootDX dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 30/11/2003, 14h50

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