Bonjour,
J'ai une dll mais je voudrais avoir le .lib correspondant.
J'ai vu qu'on pouvais utiliser la commande LINK mais cela ne fonctionne pas sous Vista.
SI quelqu'un a une idee merci
Version imprimable
Bonjour,
J'ai une dll mais je voudrais avoir le .lib correspondant.
J'ai vu qu'on pouvais utiliser la commande LINK mais cela ne fonctionne pas sous Vista.
SI quelqu'un a une idee merci
Pour utiliser une DLL, il existe 2 possibilités :
- soit tu possèdes le .dll, et le (ou les) .lib et .h (ou les) associés
- soit tu ne possèdes que le .dll
Cas 1, c'est le plus facile. Tu inclus le (ou les) .h dans ton code, tu link ton projet avec le (ou les) .lib associés, tu copies le .dll dans le bon répertoire (répertoire de ton binaire ou un des répertoires de la variable PATH ou alors dans le répertoire WINDOWS\system32).
Cas 2, c'est plus délicat. Il faut alors que tu connaisses PARFAITEMENT les fonctions de la DLL que tu veux appeler ainsi que leurs interfaces. Le mot PARFAITEMENT est important. Cette méthode ne souffre pas d'à peu près sinon, cela peut être le crash dans ton application et le problème va être très dur à diagnostiquer (problème de ton programme, de la DLL, de l'accès à cette DLL, ...).
Pour le cas 2, tous se passe avec LoadLibrary(), GetProcAddress(), FreeLibrary() et les pointeurs de fonction.
LoadLibray() est utilisé pour charger ta DLL dans ton espace mémoire.
GetProcAddress() est utilisé pour récupérer l'adresse de la fonction que tu veux utiliser(). Cette addresse est stockée dans une variable locale de type pointeur de fonction et ensuite tu appelles la fonction de ta DLL au travers de ce pointeur de fonction.
Quand tu as fini d'utiliser ta DLL, il ne pas oublier d'appeler FreeLibrary() pour décharger ta DLL.
Regarde dans ce post : Comment fonctionne ce bout de code ?, il y a un exemple d'utilisation de toute cette mécanique.
DependencyWalker est un outil qui permet de voir entre autres les fonctions exportées par une DLL.