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 :

Erreur de LINK DLL


Sujet :

Visual C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 69
    Points : 36
    Points
    36
    Par défaut Erreur de LINK DLL
    Bonjour,

    J'ai des problèmes de link sous visual j'y comprends rien du tout.

    Ce que je sais (enfin que je crois savoir) c'est que :

    Si je link avec une lib statique, je dois simplement lui donner l'emplacement du .lib et lors de la compilation
    il récupère le code du .lib pour le mettre dans mon .exe, au final mon .exe est tout indépendant c'est merveilleux !
    Si je link avec une lib dynamique, je dois lui donner l'emplacement des .lib et au moment de la compilation il va créer
    des pointeurs de fonctions vers des fonctions de la librairie dynamique qu'il utilisera pour faire le .exe,
    et donc une fois compilé je dois me trimbaler mon .exe et mon .dll (et pas le .lib ? qui sert juste à la compil ?)
    C'est là que je comprends plus, j'ai absolument tout essayé et rien ne marche,
    au début il me disait: Error LNK MaLibrairieToto.lib ok j'avais pas spécifié l'emplacement du .lib
    alors j'ai corrigé ça et maintenant il me met systématiquement une erreur
    Error unresolved link CMaClass::MaMethode( )
    Alors j'ai pensé qu'il ne trouvait pas la dll, j'ai essayé de la placer près de mon .exe, près du .lib lors de la compil,
    rien n'y fait c'est déséspérant !

    Ceux qui y comprennent quelque chose, merci d'avance :/

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Pour te linker, il te faut effectivement un .lib. Le .lib n'est utile que dans l'environnement de développement, il n'est pas utile à l'exécution.

    Maintenant, ce .lib peut contenir du binaire, c'est donc une librairie statique ou bien une référence à une fonction dans une DLL (je fais simple, c'est plus complexe que cela).

    To message d'erreur "Error unresolved link CMaClass::MaMethode( )" signifie tout simplement que la méthode MaMéthode() de la classe CMaClass n'est pas définie dans le .lib.

    Ta librairie n'est pas complète ou alors mal faite ou alors tu te trompes de nom dans la méthode

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 69
    Points : 36
    Points
    36
    Par défaut
    Merci pour ces informations,

    Dans mon cas je link avec une DLL, alors au moment de la compil je dois lui donner le chemin d'accès au .lib c'est bien ça ?
    Et où dois-je placer le .dll au moment de la compilation ? Près du .lib ?
    Et où dois-je placer le .dll au moment de l'exécution ? Près de mon .exe ?

    En fait j'ai pensé à ce que tu m'as dit, de toute façon j'ai absolument tout essayé,
    le problème est que je n'ai pas le source de cette dll et que je l'utilise très bien dans un autre projet, mais là j'ai recréé un autre projet ailleurs sur mon disque et pas moyen de refaire marcher cette dll, c'est hyper agaçant.

    Bonne nuit.

  4. #4
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Citation Envoyé par ZeNoob Voir le message
    Dans mon cas je link avec une DLL, alors au moment de la compil je dois lui donner le chemin d'accès au .lib c'est bien ça ?
    Oui, le chemin du .lib doit être donnée (ou enregistré dans la conf du projet) lors de la phase de link (2eme étape de la compil)

    Citation Envoyé par ZeNoob Voir le message
    Et où dois-je placer le .dll au moment de la compilation ? Près du .lib ?
    La DLL n'est pas utile lors de la phase de compil/link (tu peux la mettre où tu veux)

    Citation Envoyé par ZeNoob Voir le message
    Et où dois-je placer le .dll au moment de l'exécution ? Près de mon .exe ?
    Plusieurs possibilités, lire ceci : http://msdn.microsoft.com/fr-fr/library/7d83bc18.aspx

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 575
    Points
    41 575
    Par défaut
    Citation Envoyé par ram-0000 Voir le message
    La DLL n'est pas utile lors de la phase de compil/link (tu peux la mettre où tu veux)
    Du moins, pour un programme en C++ normal (sans .Net, et sans certaines fonctionnalités de COM).

    Pour du .Net, il n'y a pas de .lib, rendant la DLL nécessaire à la fois à la compilation et à l'exécution.

Discussions similaires

  1. [DLL]Erreur de link quand passage par reference
    Par Yeti_in dans le forum C++
    Réponses: 2
    Dernier message: 19/11/2008, 02h47
  2. Erreur de link dll
    Par Tyfox dans le forum C++
    Réponses: 11
    Dernier message: 24/06/2008, 10h20
  3. Réponses: 1
    Dernier message: 02/11/2006, 20h09
  4. Erreur de link entre dlls
    Par Spartan03 dans le forum C++
    Réponses: 1
    Dernier message: 16/08/2006, 19h48
  5. Erreur de link a la creation d'une dll
    Par drcd dans le forum MFC
    Réponses: 12
    Dernier message: 29/05/2006, 15h13

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