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 :

DLL - Demande d'explications


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Décembre 2009
    Messages : 95
    Par défaut DLL - Demande d'explications
    Bonjour,

    Je m'en remets à vous car je me pose de grandes questions au sujet des DLL. J'espère avant tout que ma questions trouvera sa place dans ce forum.

    Pour le contexte : je dispose de compétences en développement web (PHP). En Objective-C et en Java. Je m'intéresse de plus en plus au C# et C++, langages avec lesquels j'ai vu qu'il était possible de créer des DLL (voilà pourquoi je poste ici).

    Aujourd'hui, je me demande quel est le mode de fonctionnement des DLL, la logique qui va derrière. Pour moi, jusqu'à aujourd'hui, une DLL c'est une library, qui contient un certain nombre de méthodes, c'est un moyen de "compartimenter" le projet tout en ayant la possibilité de le modifier facilement. Par exemple, si j'ai un logiciel pour dessiner, je vais avoir une DLL qui va définir toutes mes formes et paramètres de pinceaux. Comme ça, si demain je veux en ajouter une, j'ai juste à modifier cette DLL et la remplacer.
    Est-ce bien ainsi que fonctionnent ces fichiers ?

    Si je me pose toutes ces questions, c'est parce qu'en tant que joueur occasionnel, je joue à des jeux de shoot en ligne (Combat Arms en l’occurrence) et je me suis demandé comment fonctionnaient les logiciels de hack, comment un programme peut en modifier un autre sans que cela ne pose de problèmes de sécurité. Là je me suis rendu compte qu'en faite, il s'agissait de DLL. Mais, ces DLL ont toutes des noms différents donc j'en suis venu à me demander, est-ce qu'il suffit d'insérer une DLL custom dans le dossier d'un logiciel pour qu'il l'interprète ? Cela me semble impossible, il faut bien que quelque part dans le code de base, il y ai un appel à la dll non ?
    Comment ces dll interagissent avec le logiciel ?

    Enfin, pour comprendre d'avantage le fonctionnement et trouver plus de réponses, je souhaiterais savoir s'il est possible et facile de réaliser une DLL qui, par exemple, ajoute un bouton à la calculatrice Windows, un simple bouton qui au clique affiche "Hello World" ? Est-ce que dans le principe, la modification d'un logiciel comme ça est légale et d'un point de vue sécurité, est-ce que les anti-virus l'acceptent ?
    Si c'est facile et possible, auriez-vous des tutoriaux sous la main pour me guider ?


    Pour finir avec toutes mes questions et si je ne me trompe pas en affirmant qu'une DLL est réalisable en C#, je crois savoir qu'elle l'est aussi en C++. Concrètement, y aura-t-il une différence sur le rendu en fonction du langage utilisé pour le développement ? Est-ce que l'une sera plus rapide en terme de temps d'exécution que l'autre, ou seront-elles parfaitement identique ? Si cela dépend des compilateurs, est-ce que ceux pour C++ ont un meilleur rendu que celui de Visual Studio pour le C# ?

    Merci à vous d'avoir pris le temps de me lire, j'espère vraiment ne pas faire fausse route depuis le début.
    Et merci d'avance à ceux qui apporteront des réponses à mes questions.

  2. #2
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Par défaut
    Bonjour.

    Le problème, c'est que pour te donner une réponse juste à la majorité de tes questions, il faudrait écrire un pavé de 50 pages...

    Je vais juste à répondre à la question : à quoi sert une dll.

    Imaginons que 100000 programmes utilisent exactement la même fonction. Cela voudrait dire que cette même fonction va être copier sur le disque dur 100000 fois pour chaque exécutable, pour rien...

    Donc pour économiser de l'espace disque, cette fonction sera mise dans une dll, que chaque programme pourra utiliser. Il n'existera qu'une seule copie de cette fonction sur le disque dur. Un gain de place appréciable en général.

    Le deuxième avantage des dll, c'est que si tu apportes une modification (gain de performance, correction de bug, etc...), tous les programmes qui utilisent cette dll bénéficieront de l'update. Pas forcément besoin de recompiler chaque programme.

    J'espère que d'autres personnes répondront à l'ensemble de tes questions.

  3. #3
    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
    Alors, hors circonstances spéciales, il ne suffit pas de mettre une DLL dans le dossier d'un exécutable pour qu'il l'utilise: Il faut que l'exécutable la référence.

    Il est possible d'usurper l'identité d'une DLL vue d'un exécutable en la plaçant dans le même dossier (et encore, je crois que pour les KnownDLLs ça ne marche pas) mais le cas des plug-ins réclame l'aide de l'application: Soit du code dans le programme pour parcourir le dossier et charger les DLLs (parfois avec une extension spécifique au lieu de ".dll"), soit des infos de config (fichier .ini, Registre, etc.) indiquant quelles DLLs charger.

    L'influence du langage, c'est plutôt l'influence de la plate-forme: Une DLL .Net est assez différente d'une DLL ordinaire (entre autres, elle peut être protégée de l'usurpation) et elle référence l'infrastructure .Net. Les langages diffèrent selon la plate-forme: C et C++ pour une DLL ordinaire, C#, C++/CLI et VB.Net pour .Net.
    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.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Décembre 2009
    Messages : 95
    Par défaut
    Bonjour Moldavi & Médinoc,

    Merci beaucoup pour vos réponses qui ont parfaitement répondues à mes questions et qui en même temps confirme ce que je pensais.

    Maintenant pour trouver des réponses à quelques point spécifiques je m'en vais faire une fouille sur Internet

    Merci à vous !

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

Discussions similaires

  1. [Débutant] DLL - Demande d'explications
    Par oOXimOo dans le forum C#
    Réponses: 3
    Dernier message: 03/02/2014, 15h40
  2. [C#] demande d'explication sur un sample msdn
    Par legillou dans le forum Windows Forms
    Réponses: 2
    Dernier message: 27/06/2006, 17h01
  3. [final]demande d'explication sur ce mot-clé
    Par Invité dans le forum Langage
    Réponses: 10
    Dernier message: 18/04/2006, 11h32
  4. utilisation de code barre - demande d'explication
    Par cortex024 dans le forum Windows
    Réponses: 15
    Dernier message: 16/02/2006, 16h37
  5. Demande d'explication : "return false"
    Par mickeliette dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 04/10/2004, 10h06

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