|
Bas de page | |
---|---|
Auteur | Sujet : [C] Utilisation d'une DLL |
Edwardkei | Bonjour,
Message cité 1 fois Message édité par Edwardkei le 11-11-2008 à 12:06:16 |
Publicité | Posté le 11-11-2008 à 11:42:48 |
sligor |
Message cité 1 fois Message édité par sligor le 11-11-2008 à 14:26:58 |
olivthill |
Elle est chargée quand le progrmme en a besoin. Ca peut-être longtemps après le chargement du programme. Cela peut-être longtemps avant si un autre programme en a eu besoin.
Une API Windows (pour les autres API c'est peut-être différent) n'est pas un ensemble de fonctions, c'est UNE fonction, écrite en C, incluse dans Windows et documentée par M$. Les API résident physiquement dans des DLL (user32.dll, par exemple).
Cela dépend de la DLL. Si c'est une DLL du noyau, il n'y a pas besoin de demander son chargement, mais si c'est une DLL maison, alors il faut demander son chargement (que Windows ne fera pas s'il voit qu'elle est déjà chargée en mémoire) avec l'API LoadLibrary().
|
olivthill | La différence réside dans le fait que pour un chargement explicite, il faut inclure dans le programme l'appel à LoadLibrary(), GetProcAddress(), et FreeLibrary() alors que ce n'est pas nécessaire si le chargement est implicite.
Message édité par olivthill le 17-11-2008 à 10:53:37 |
olivthill | Avec LoadLibrary(), on est certain que la DLL sera chargée. Cela évite d'avoir à se poser des questions en fonction de la version de Windows ou d'autres paramètres. Et si on fait LoadLibrary() alors que ce n'est pas utile, alors tout marche quand même. Mais, pour les DLL hyper communes, du genre user32.dll, c'est inutile de le faire.
|
tpierron | En général vaut mieux laisser Windows faire ça, car le code est nettement plus simple.
|
kao98 ... | Ta DLL, tu dois l'écrire avec labWindows non ?
Message édité par kao98 le 18-11-2008 à 14:07:57 --------------- Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98 |
gilou ModérateurModzilla |
Utiliser une DLL compilée avec un compilo A dans un programme compilé avec un compilo B, ca a toujours été périlleux: Un exemple de problème rencontré: le compilo A installe son handler d'erreur en cas de division par zero. Le compilo B aussi. Message édité par gilou le 19-11-2008 à 13:45:36 --------------- There's more than what can be linked! -- Iyashikei Anime Forever! -- AngularJS c'est un framework d'engulé! -- |
gilou ModérateurModzilla | C'est pour cela que en environnement professionnel, les vendeurs de dll payantes te proposent parfois la dll compilée avec plusieurs versions du compilo A+, Message édité par gilou le 19-11-2008 à 15:18:30 --------------- There's more than what can be linked! -- Iyashikei Anime Forever! -- AngularJS c'est un framework d'engulé! -- |
Publicité | Posté le 19-11-2008 à 15:13:35 |
Joel F Real men use unique_ptr |
|
olivthill | L'intérêt de la chose est que si ce n'est pas un multiple de 4, alors les données ne sont pas "alignées" et cela ne marche pas. |
tpierron |
|
olivthill | Pourquoi aligner les début de ligne sur 4 octets ? Parce que c'est plus rapide sur les architectures 32-bit (CPU et/ou chip de la carte graphique), car sinon le microprocesseur est obligé de faire un masquage pour ne récupérer qu'à partir du deuxième, troisième ou quatrième octet dans son registre de 32 bits. |
olivthill | Ce n'est pas une question d'intérêt, mais de nécessité. Essayez votre progrmame avec une longueur de 663 et s'il ne marche pas (comme je le suppose), essayez avec l'alignement sur 664 (et il devrait marcher). |
tpierron | Plus que de nécessité, je dirais d'optimisation. Enfin, ça reste encore à prouver que c'est toujours utile à l'heure actuelle. Pour autant que je me souvienne cette contrainte date de la préhistoire : Windows 3.1 au plus. Par compatibilité ascendante, Microsoft n'avait pas trop d'autre choix que de garder cette contrainte. Cela dit, c'est pas la mort non plus. Perso j'aligne ça avec un code du genre :
|
Sujets relatifs | |
---|---|
Utilisation de la fonction "include()" | [C++][resolu]error: no matching function for call to... |
[ C ] Erreur de segmentation (core dumped) | Programmation Threads en C++ |
utilisation de setrlimit | utiliser une dll compilée en C# dans un projet VisualC++ |
Utilisation de goto et les prob engendrés ? | Exercices programmation C++ |
VBA - C++ - DLL | |
Plus de sujets relatifs à : [C] Utilisation d'une DLL |