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 de création/utilisation de dll avec visual C++ 2010


Sujet :

C++

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Décembre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2012
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Problème de création/utilisation de dll avec visual C++ 2010
    Bonjour,
    Je suis en train de créer un ensemble de dll pour piloter un périphérique en UDP.
    Il y a plusieurs niveaux :
    1. Une dll pour la communication en UDP
    2. Une dll qui contient les fonctions utilisées pour piloter le périphérique et qui fait appel à la dll de communication
    3. Mon programme principale qui appel la dll de pilotage


    Le problème vient de ma dll de pilotage (j'arrive à charger la dll de communication séparément), lorsque j'essai de la charger avec un LoadLibrary, je récupère le code d'erreur 126.

    Je ne sais pas si le problème vient de mes options de projet :
    • Utilisation des MFC dans une dll partagée
    • pas d'ATL
    • caractère unicode
    • pas de CLR
    • DLL multithread /MD


    ou de l'appel à ma bibliothèque de communication :
    • Insertion et appel du .h avec les dllimport
    • Insertion du .lib dans mon projet


    En tout cas, ça coince quelque part. Est-ce que quelqu'un peut m'aider ?

    Merci

  2. #2
    Membre éclairé
    Inscrit en
    Décembre 2010
    Messages
    290
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 290
    Points : 719
    Points
    719
    Par défaut
    L'erreur 126 (ERROR_MOD_NOT_FOUND) signifie que LoadLibrary n'a pas trouvé la DLL concernée.
    Es-tu sûr du chemin d'accès que tu as passé à LoadLibrary ?

    Il peut y avoir un piège : si cette DLL de pilotage elle même est liée en load time link à une autre dll qui elle n'est pas trouvée, alors je serais pas étonné que tu obtiennes la même erreur.

    Edit : pour y voir plus clair, pourrais-tu donner l'arborescence simplifiée de ton programme ? genre où se trouve le programme principal et où se trouvent les DLLs auxquelles il fait appel ?
    Et aussi, quel est le répertoire courant lorsque tu lances ton programme principal ?

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Décembre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2012
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Bonjour,
    Merci de ta réponse. Mon chemin d'accès est bon, en mettant ma dll de communication au même endroit, j'arrive à l'ouvrir sans problème (du genre _T("C:\\Users\\...\\MaDll.dll")).
    Du coup, c'est possible que ma dll de pilotage ne trouve pas la dll de communication. Hormis inclure le .h et .lib, j'ai aussi ajouter le répertoire de la dll de communication dans les répertoires de bibliothèques supplémentaires. Est-ce qu'il faut encore lui ajouter autre chose ?

  4. #4
    Membre éclairé
    Inscrit en
    Décembre 2010
    Messages
    290
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 290
    Points : 719
    Points
    719
    Par défaut
    Citation Envoyé par RomualdG Voir le message
    j'ai aussi ajouter le répertoire de la dll de communication dans les répertoires de bibliothèques supplémentaires. Est-ce qu'il faut encore lui ajouter autre chose ?
    Donc si je comprends bien, ta dll de pilotage est liée en load time link (c'est à dire sans utiliser LoadLibrary() mais plutôt en ayant ajouté le .lib) à ta dll de communication UDP ?
    Et cette DLL de communication UDP se trouve "ailleurs" ?
    Alors y a tout un tas de règles qui expliquent où Windows va aller chercher cette DLL. Cette page en donne quelques-unes :
    http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
    Ajouter le répertoire de la dlll dans les propriétés de ton projet ne peut pas résoudre ce problème. La solution la plus simple, c'est de la placer à un endroit où Windows va la trouver, par exemple le répertoire où se trouve l'exécutable principal.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Décembre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2012
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Hop là, pause café, me revoilà
    Effectivement, j'utilise un .lib.
    Je viens de mettre mes dll dans le répertoire de mon .exe et ça fonctionne !!!
    Merci beaucoup phi1981.

    P.S. : Et du coup je vais regarder le liens que tu m'as passé pour voir si je peux garder ma dll "ailleurs".

    Encore merci

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

Discussions similaires

  1. Utilisation de dll avec visual studio 2010
    Par artoon_42 dans le forum C++
    Réponses: 6
    Dernier message: 11/12/2012, 22h36
  2. Problème d'utilisation d'Ogre3D avec visual studio 2008
    Par Xystres dans le forum Bibliothèques
    Réponses: 1
    Dernier message: 27/01/2009, 00h26
  3. Réponses: 6
    Dernier message: 07/06/2007, 22h03
  4. utilisation DLL avec visual studio .net
    Par G-OnZa dans le forum Visual C++
    Réponses: 2
    Dernier message: 27/04/2007, 15h56

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