Tom's Guide > Forum > Programmation > Modifier le chemin des DLL dans un projet

Modifier le chemin des DLL dans un projet

Forum Programmation : Modifier le chemin des DLL dans un projet

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

Bonjours a tous et a toutes, je pense que le sujet n'est pas tres explicite !
Je développe:
-Dans mon projet, il y a pas mal de dlls (puisque je suis en SDL, avec SDL_Image, Fmod, etc) donc j'ai 9 dlls, et ça fait moche quand tout ç est dans le meme dossier que l'executable (on ne sait plus ou donner de la tete, ni quoi executer, je me mais à la place de l'utilisateur :)).
Donc j'aimerais creer un dossier dlls et le mettres la dedans, mais quand je fais ça il ne trouve plus les dlls, donc je suppose que ça doit etre dans un reglage de l'IDE, et ç'est la que je suis bloqué.
Comment modifier le rêpertoir des dlls ?
Je suis sous Dev c++, en C.
Merci

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

Au final, tu garderas les DLL à côté de l'exe, on parie ? ;)

Je t'explique comment ça fonctionne sous windows. Le fichier .exe contient les liens vers les DLL dynamiques à utiliser (avec l'ensemble de ses fonctions). Si l'on suppose que les DLL ne sont pas déjà chargées en mémoire, windows va chercher le fichier DLL portant la bon nom, et il va chercher dans l'ordre:
- dans le répertoire courant de l'exe, précisément le chemin de l'image (au sens binaire) utilisée pour créer le processus.
- dans les répertoires référencé dans la variable d'environnement PATH
S'il ne la trouve pas, il renvoie une erreur, il ne va pas chercher plus loin.

Donc si tu tiens absolument à le charger d'un autre répertoire, il ne faut pas compiler en liant la bibliothèque, utiliser un LoadLibrary, et n'utiliser les fonctions de la dll qu'en manipulant les pointeurs de fonctions retournées par GetProcAddress. En utilisant ça, tu ne charge pas la DLL lors du chargement du processus, mais n'importe dans le code (là où tu as mis le LoadLibrary). Du coup dans ce cas:
- soit tu mets le chemin complet ou relatif de la bibliothèque
- soit, avant l'appel au LoadLibrary, tu utilises SetDllDirectory pour ajouter un chemin de répertoire de DLL
- soit, avant l'appel au LoadLibrary, tu modifies le répertoire courant avec SetCurrentDirectory

Bref, il est préférable de soit de partager la DLL dans C:\windows\system32, soit, meilleure solution, de laisser les DLL à côté de l'exe. Comme de toutes façon, avec un installateur (genre Innosetup ou NSIS ;) ), tu as mis les raccourcis qui vont bien, ça ne devrait pas gêner l'utilisateur :)

------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky

ok merci cricky pour ce mini cour, je vais obter pour un installateur

Répondre à ptitcois

Vas-y carly31 (pardon Patrick45 :D ), explique-nous comment ça fonctionne ou donne le lien MSDN :D

------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky
Tom's Guide > Forum > Programmation > Modifier le chemin des DLL dans un projet
Aller à :

Il y a 400 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens