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 :

Utiliser une dll


Sujet :

Visual C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 92
    Par défaut Utiliser une dll
    Bonjour,

    Apres avoir parcouru des tutoriaux qui apprennent à faire des trucs supers durs, et les menus de Vc++ qui proposent des options plus compliqué les unes que les autres, je pose ma question simple pour etre sur d'avoir fait comme il faut :

    J'ai 3 fichiers :
    - chose.h
    - chose.dll
    - chose.lib

    Je veux m'en servir je met les choses ou et je fais quoi dans les options du projets (je travaille sous visual c++ 2005 express) ?

    (Apparemment le C++ je maitrise pas )

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    (en supposant que les trois fichiers soient bien faits)

    1. Tu inclus (avec #include) chose.h dans les fichiers sources qui doivent utiliser les fonctions de la DLL.
      • Soit en copiant le fichier dans le répertoire du projet
      • Soit en spécifiant un chemin absolu ou relatif complet dans le #include
      • Soit en tripotant les "Addidional include directories" dans les options du projet

      Après cette étape, la compilation de chaque fichier source doit marcher.
    2. Tu lies le .lib au projet.
      • Soit en ajoutant dans un fichier source "#pragma comment(lib, "chose.lib")" (mais ça ne marche que sous visual)
      • Soit en ajoutant chose.lib aux options du projet (sous VS2005 : Project properties -> Configuration properties -> Linker -> Input -> Additional dependencies)

      Après cette étape, l'édition de liens doit marcher.
    3. Il faut que la DLL soit accessible lors de l'éxécution
      • Par exemple, dans le même répertoire que l'exécutable
      • Dans un répertoire spécifié dans la variable d'environnement PATH

      Pour plus d'infos : Dynamic-Link Library Search Order
      Après cette étape, l'exécution doit marcher.

    Avec cela, normalement, ça devrait marcher.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 92
    Par défaut
    Bon rien à faire en Express, pas trouvé, je suis passé en normal et ca a marché direct sans rien faire ^^

    Merci pour tout je vais enfin pouvoir commencer à coder

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 92
    Par défaut
    Bon dans mon combat contre les Dll je cherche encore à comprendre quelques petites choses (oki j'ai menti, ENORMEMENT de choses).


    En 2 petites interrogations :
    1/ Ce que j'ai compris et dont je ne suis pas sur :
    Depuis une dll qqconque, coucou.dll , une entete coucou.h est construit et on intégrera celle ci dans notre projet. Cette entete coucou.h doit contenir des fonctions qui feront référence au fonction de la dll, ainsi qu'à sa structure de donnée.
    On pourra donc trouver sur internet plusieurs entete coucou.h qui feront référence à la meme dll (ouh la "faire référence" je paris que c une expression employé pour un autre emploi :/ )


    2/ Ou trouve t on les descriptions de ces dll ? ou trouve t on les entete associé à ces dll ? Par exemple je suis à la recherche d'une entete et de la description de la dll pour HID.dll et je ne trouve nul part qqchose qui semble officiel. Il me semble pourtant que c une dll windows.
    Y a t il des entete hid.h officiel (je demande par la meme occasion)

    Merci de toutes les informations que vous pourrez m'apporter

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Tu ne trouveras pas toujours un en-tête par DLL.

    Les DLLs .Net n'en ont pas besoin (tout est inclus dedans sous forme de méta-données), les "Composants COM" n'en ont pas non plus s'ils utilisent des interfaces connues (sinon, ils ont une bibliothèque de types).
    Quant aux DLLs de Windows, elles ont généralement des en-têtes différents: Les fonctions du Registre sont déclarées dans winbase.h et se trouvent dans advapi32.dll. Les fonctions socket se trouvent dans wsock32.dll et ws2_32.dll, mais sont déclarées dans winsock.h et winsock2.h, etc.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 92
    Par défaut
    Donc pour enrichir ma culture Dll et lever le brouillard de mon incompréhension, comment sont utilisées par un programme C/C++ les Dll auxquelles aucunes entete n'est associée ?
    Vous parlez de méta donnée, mais comment y a t on acces ? une dll au bloc note c pas top à regarder

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

Discussions similaires

  1. [JNI] Difficultés pour utiliser une DLL
    Par etiennegaloup dans le forum Entrée/Sortie
    Réponses: 10
    Dernier message: 15/08/2005, 21h29
  2. [Windows]utiliser une dll c# en java
    Par dude666 dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 01/07/2005, 02h19
  3. Réponses: 7
    Dernier message: 13/01/2005, 10h30
  4. [DLL] utiliser une DLL a partir d' une DLL et un .def
    Par venomelektro dans le forum MFC
    Réponses: 9
    Dernier message: 07/12/2004, 14h01

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