CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

C++ - DLLs ?

_[CONKER]_
_[CONKER]_
Niveau 10
02 janvier 2005 à 15:18:46

Bonjour tout le monde !
Alors voilà, j´aimerais bien me mettre à la créations de DLLs, je sais à quoi ça sert, mais je n´sais pas comment faire.. J´ai bien cherché sous google, mais je ne trouve que des lignes de code non-expliquées, jetées comme par magie.. J´ai cru remarquer que la façon de créer des DLLs différait selon les compilateurs, est-ce exact ? Enfin bref, si vous aviez des tutoriaux, j´en serais ravis..
Merci :)

dnob700
dnob700
Niveau 10
02 janvier 2005 à 15:20:45

oui c´est vrai, et c´est justement pour ça qu´il faudrait que tu dise quel compilo tu utilise, sinon on peut rien faire pour toi.

_[CONKER]_
_[CONKER]_
Niveau 10
02 janvier 2005 à 15:22:08

Désolé je n´étais pas sûr :).
A vrai dire, pour l´instant j´utilise dev-cpp, mais je peux très bien coder sous VC6 ça ne me pose aucun problème étant donné que je l´ai à disposition..

dnob700
dnob700
Niveau 10
02 janvier 2005 à 15:30:59

sous dev c++ tu as un type de projets DLL, sous VC6 aussi ( ou alors c´est un sous type de application windows).

une fois que tu as créé ça, tu as un petit exemple de code.

Il y a quelques problème : a chaque fois ces exemple utilise des classes, c´est pratique mais plus complexe, le vraie problème est que tu ne pourra utiliser tes DLL qu´avec d´autre programme en C++ et surtout tu ne pourra pas utiliser le mécanisme standard des DLL, tu sera à la compilation de ton programme obligé de linker avec une lib ( très très petite) qui donne les info sur ou trouver les fonctions dans ta DLL).

l´autre méthode est celle qu´il faut privilégier surtout si tu veux déployer ta DLL et elle passe par les fichier . def ( ça c´est pour VC, je ne sias pas trop avec dev cpp).
dans ton projet tu crée un fichier . def et tu lui mets cette structure :

NomDLL
EXPORTS
Nomfonction1 @1
Nomfonction2 @2
. ..

sinon, quand tu utilise des programme comme dependancy walker ( fournit avec VC) tu t´apercoit que les fonction de ta DLL ont des noms bizare ( dit décoré). le fichier . def evite ça et permet d´appeller les fonction avec le mécanisme normal loadlibray & Cie.

dnob700
dnob700
Niveau 10
02 janvier 2005 à 15:33:35

euh, j´ai juste oublier de te dire que à pars ça, tu code exactement de la meme manière que d´habitude, à la seul exception qu´il FAUT ABSOLUMENT bannir les variable globales ( de porté supérieur à une seul fonction).

car sinon, si plusieurs programmes chargent ta DLL en même temps cette variable sera partagé pour tous ( à moins que ce soit ce que tu veuille, mais c´est dangereux car il est très difficile de prédire quand est ce qu´une DLL est chargé et déchargé si tu utilise une lib pour appeler les fonctions ( ce qui est quand même plus pratique)).

_[CONKER]_
_[CONKER]_
Niveau 10
02 janvier 2005 à 16:22:25

Ok je crois voir comment faire une DLL et l´utiliser, mais j´ai pas trop capté comment utiliser le . def.. Je vois à peu près à quoi ça sert, mais comment comment l´utiliser.. Il suffit de le créer avec la structure que tu m´as donnée et de l´ajouter au projet lors de la compilation ?

LGV
LGV
Niveau 28
02 janvier 2005 à 17:01:14

( juste un petit complement, on peut se passer d´un fichier . def avec des __declspec et des __export dans le code meme)

dnob700
dnob700
Niveau 10
02 janvier 2005 à 18:39:15

en tout cas avec VC++ même avec son __declspec(dllexport) il décore les nom des fonctions si on utilise pas de . def mais ya peut-être une option de compilation à coté de laquel je suis passé.

dans ce cas là, il reste l´avantage de l´ordinal de la fonction, ce qui peut toujours être utile.

et conker, oui vc utilise automatiquement le . def pour la compilation ( en fait c´est dans les option du projet, mais il le rajoutte tout seul dès que tu le mets dans le projet).

_[CONKER]_
_[CONKER]_
Niveau 10
02 janvier 2005 à 21:10:41

Merci bien pour vos réponses.
Et ensuite, je compile et j´ai ma dll ?
Sera-t-elle utilisable par d´autres programmes écrits à l´aide d´autres langages de programmation ?

dnob700
dnob700
Niveau 10
02 janvier 2005 à 22:17:51

oui bien sur a condition d´écrire toi même les bonne définition.

en tout cas j´utilise sans problème en VB des dll écrite en C et je suppose qu´on doit pouvoir le faire aussi simplement en Delphi, probablement en Pascal ( pour des version windows), BlackBox ou tout les autres langage qui ont les mécanisme nécessaire ( appel à l´API win32 ou directement au DLL).

_[CONKER]_
_[CONKER]_
Niveau 10
02 janvier 2005 à 22:22:41

Merci beaucoup, c´est à peu près tout ce que je voulais savoir concernant les DLLs, plus qu´à mettre ça en oeuvre :).

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment