DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013
-
7 août 2004 à 13:04
DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013
-
7 août 2004 à 18:24
Yep,
Juste une ptite question d'information.
Quel sont les différences entre un linkage dynamique et statique d'une DLL dans un programme, d'un point de vue compilation?
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 7 août 2004 à 14:26
Bien sur, si c'est LA dll de TON prog, alors faut le lier au linkage.
Le code kernel de chargement de l'OS ira toujours plus vite que les appels LoadLibrary... de ton prog.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 7 août 2004 à 17:28
En lisant Richter tu aurais su l'algo de recherche du chargeur.
winSys
Win
TonProg sur sa currentdirectory
Dossiers connus des variables d'environnemnt
ciao...
BruNews, Admin CS, MVP Visual C++
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 7 août 2004 à 13:29
Statique: le linker va marquer dans l'exe les points d'entree necessaires dans la dll cible. Au lancement de l'exe, le chargeur de l'OS chargera la dll et verifiera les differents points d'entree de la dll. Si au moins 1 seul truc pas bon, exe ne finira pas son chargement et OS affiche erreur.
Dynamique: OS ne sait rien des besoins de l'exe, au developpeur de tout gerer.
ciao...
BruNews, Admin CS, MVP Visual C++
Vous n’avez pas trouvé la réponse que vous recherchez ?
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 7 août 2004 à 14:16
Si tu veux prendre en charge les winbebes(95, 98), faut des fois charger une dll en dynamique car ces vieux systemes n'ont pas tout d'implemente. Tu evites ainsi l'InjureBox de l'OS et tu adaptes ton prog. Voila un exemple de cas.
DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013 7 août 2004 à 15:35
Ah oui autre chose encore.
Le soucis c'est que ma DLL doit être redistribué sans le .lib.
Pour un chargement statique il faut le .lib. Je ne peux pas faire sans ?
DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013 7 août 2004 à 16:03
Aj je pense avoir saisie.
En fait le linkage implicite veut dire que lorsque je devellope mon programme client, je me sert du .lib.
Ensuite lorsque je vais redistribuer mon application, je n'aurai pas besoin de me servir de mon .lib.
Il y aura juste la DLL et l'executable.
Par contre ceux qui voudront utilisé ma DLL devrons utiliser un chargement dynamique car ils n'auront pas le .lib.
DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013 7 août 2004 à 16:54
Ah au fait une ptite question m'est venu a l'esprit.
Si mon programme utilise plusieurs DLL, a la compilation je vais linker avec tout mes .lib, mais ensuite lorsque je vais importer mes différentes fonctions comment le programme va t'il faire pour savoir dans quelle DLL se trouve la fonction en question ?
Et si dans DLL1 j'ai une fonction Init() et que dans DLL2 j'ai aussi une fonction Init() comment cela va etre interpreter ?
Va y avoir de la redefinition de fonction non ?
DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013 7 août 2004 à 17:10
Yep,
C'est le mieux a faire je pense.
Par contre est ce que je suis obligé de mettre ma DLL dans le meme repertoire que mon executables ou dans le repertoire systeme de windows ?
Puis-je la mettre autre part ? Dans un sous dossier par exemple ?