cs_fahim
Messages postés23Date d'inscriptionsamedi 8 mai 2004StatutMembreDernière intervention 5 juin 2006
-
10 avril 2006 à 15:15
meech
Messages postés209Date d'inscriptionvendredi 11 avril 2003StatutMembreDernière intervention14 août 2007
-
12 avril 2006 à 16:15
Bonjour,
J'ai besoin d'utiliser les fonctions d'une DLL pour réaliser mon projet. Est-ce qu'il y a un moyen pour charger cette DLL dans le projet une fois pour toute sans passer par l'utilisation de LoadLibrary sachant que j'utilise Visual Studio.Net.
Merci.
meech
Messages postés209Date d'inscriptionvendredi 11 avril 2003StatutMembreDernière intervention14 août 2007 10 avril 2006 à 16:10
Salut,
Oui, il existe un moyen : lier cette Dynamic Link Library directement avec ton projet. Par contre, l'exécutable ne fonctionnera pas si cette DLL est manquante ou si elle n'est pas dans l'un des chemins de la variables d'environnement %PATH%.
Je n'ai pas Visual Studio sous les yeux mais, il me semble que tu peux spécifier les DLL liées au projet dans les "Options du projet".
meech
Messages postés209Date d'inscriptionvendredi 11 avril 2003StatutMembreDernière intervention14 août 2007 10 avril 2006 à 16:25
Les #pragma dépendent du compilateur utilisé : ce n'est pas particulièrement conseillé pour réaliser du code portable.
Sinon : "options -> éditeur de lien -> entrée -> dépendances supplémentaires"
cs_Joky
Messages postés1787Date d'inscriptionlundi 22 novembre 2004StatutMembreDernière intervention31 janvier 20092 10 avril 2006 à 16:31
IDE : Visual Studio...
Donc marchera très bien
Enfin oui après t'as la méthode manuelle mais bon c'est long et fastidieux ;D
if(!Meilleur("Joky")) return ERREUR;<
Vous n’avez pas trouvé la réponse que vous recherchez ?
Taron31
Messages postés199Date d'inscriptionvendredi 16 avril 2004StatutMembreDernière intervention28 février 2008 10 avril 2006 à 21:29
Jocky, moi je procède comme cela :
Tu crées un projet Win32 Dynamic-Link Library et tu sélectionnes A DLL that exports some symbols comme ça à la compilation tu auras un .LIB en plus de ta DLL. Tu mettras le .LIB dans le répertoire Debug de ton projet et tu rajoutes comme l'a précédemment signalé Jocky #pragma comment(lib, "yourdll.lib") dans ton programme. Après tu importes les symboles des fonctions de la DLL avec un code du genre :
Bien entendu dans ta DLL tu devras déclarer et définir tes fonctions avec le prototype :
extern "C" __declspec(dllexport) void DllFunction() { }
extern "C" __declspec(dllexport) void OtherDllFunction() { }
Bien sûr il doit exister d'autres manières de le faire mais c'est la seule que je connaisse et qui permet d'utiliser une DLL avec un linkage "statique" sans utiliser LoadLibrary & Cie...
J'espère t'avoir aider...
___________________
MVS - Most Valuable Student (Microsoft)
cs_fahim
Messages postés23Date d'inscriptionsamedi 8 mai 2004StatutMembreDernière intervention 5 juin 2006 12 avril 2006 à 10:13
Merci de votre aide, mais certains de vous me proposent d'utiliser une librairie statique .lib alors que je ne dispose que de la DLL. Je veux savoir si je peux m'en passer de LoadLibrary et de définir chaque fois la fonction dont j'ai besoin.
meech
Messages postés209Date d'inscriptionvendredi 11 avril 2003StatutMembreDernière intervention14 août 2007 12 avril 2006 à 10:25
Salut,
Les DLL (Shared Objects sous les Unix et autres) sont des librairies dynamiques, donc par définition, non incluses dans ton exécutables. Elles peuvent se charger de deux manières :
1. Le chargement dynamique "à la volée", donc lorsque tu en as besoin, avec les fonctions LoadLibrary sous Windows ;
2. Lors de la compilation d'un projet, on peut directement au programme les DLL en le spécifiant dans les options de compilation. Mais ceci impose à l'utilisateur exécutant le programme de posséder cette DLL.
cs_fahim
Messages postés23Date d'inscriptionsamedi 8 mai 2004StatutMembreDernière intervention 5 juin 2006 12 avril 2006 à 16:10
Merci meech pour ces détails, ainsi que pour les autres pour leur aide. Je viens d'essayer de charger des fonctions et ça marche à merveille. Mais je trouve de mal à récupérer les structures de données qui se trouvent dans cette DLL. Peux-tu m'expliquer comment faire.
meech
Messages postés209Date d'inscriptionvendredi 11 avril 2003StatutMembreDernière intervention14 août 2007 12 avril 2006 à 16:15
Re,
Les déclarations des fonctions, structures sont contenus, comme à l'habitude, dans les fichiers *.h ou *.hpp.
Si tu ne disposes pas de ces fichiers, il faut récupérer la déclaration dans les documentations des API de ta DLL.