Visual C++ et une appli basée sur des lib/dll...

Visual C++ et une appli basée sur des lib/dll... - C++ - Programmation

Marsh Posté le 13-05-2003 à 14:02:22    

Salut,
 
J'utilise VC++.
 
J'ai créé une librairie basique, ce qui a eu pour effet de me générer un .lib et un .dll (MFC AppliWizrad qui m'a généré tout ça! Tout compile bien)
 
Alors, j'ai créé une autre appli, et je souhaite incorporer la fonctionnalité des DLL/LIB récemment crées, donc dans un projet indépendant.
 
Pour ce faire, j'ai inclus le bon fichier .h qui se trouve dans le répertoire du projet ou j'ai fait mes DLL, et j'ai incorporé le .lib dans l'arbre de mon projet, pointant donc dans le répertoire ou j'avais créé mes DLL!
 
Quand je lance l'appli, il me dit  
 
"Cette application n'a pas pu démarrer car blablabla.dll est introuvable. La réinstallation de cette application peut corriger le probleme."
 
Alors, j'ai pris la DLL du répertoire original, et je l'ai mis dans le debug de l'appli devant se servir de ces librairies, et là...ca marche!
 
Je ne comprends pas trop pourquoi, donc, j'aurais voulu déja connaitre la différence entre un .lib et un .dll.
Le .dll n'apparait pas dans l'arborescence de mon projet, contrairement au .lib...
 
Merci,
 
Yoyo*
 
 
 


---------------
It's nice to be important, but it's more important to be nice
Reply

Marsh Posté le 13-05-2003 à 14:02:22   

Reply

Marsh Posté le 13-05-2003 à 14:06:25    

le lib permet a ton programme de charger la dll
maintenant il faut que quand tu lance ton prog la dll soit trouvable (c a dans le "path" )

Reply

Marsh Posté le 13-05-2003 à 14:16:07    

Un LIB est juste la "description" des fonctionnalités codées dans la DLL, pas les fonctionnalités elles-mêmes. Ca sert juste à linker avec le EXE. Quand tu voudras distribuer ton appli, il faudra fournir le EXE et la DLL mais pas le LIB.
 
Un programme cherche les DLL dans le même répertoire que l'EXE puis il cherche dans le repertoire système (ex: c:\winnt\system32\)


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
Reply

Marsh Posté le 13-05-2003 à 15:07:41    

Tetragrammaton IHVH a écrit :

Un LIB est juste la "description" des fonctionnalités codées dans la DLL, pas les fonctionnalités elles-mêmes. Ca sert juste à linker avec le EXE. Quand tu voudras distribuer ton appli, il faudra fournir le EXE et la DLL mais pas le LIB.
 
Un programme cherche les DLL dans le même répertoire que l'EXE puis il cherche dans le repertoire système (ex: c:\winnt\system32\)


 
Pour compléter ce qu'a dit Tetragammaton IHVH, je dirais que le code contenu dans les fichiers .lib est utilisé pour générer l'EXE => tout ce qui se trouve dans le .lib se retrouvent dans l'exe ...
 
Mais pour ta dll, ton .lib ne possède que des outils pour rechercher les fonctions contenues dans ta dll et les publier dans ton prog ...
 
Les DLL sont recherchées comme tout fichier exécutable sous Windows : D'abord dans le répertoire courant, ensuite dans le path ... (cf tes variables d'environnement)


---------------
last.fm
Reply

Marsh Posté le 13-05-2003 à 15:50:15    

OK, merci pour toutes vos réponses, j'y vois vraiment plus clair :)
 
@Bientot,
 
Yoyo*


---------------
It's nice to be important, but it's more important to be nice
Reply

Marsh Posté le 13-05-2003 à 17:32:41    

Bien sur il est possible de ne faire qu'un .lib plutot qu'une DLL, et alors plus de problèmes pour trouver la Dll a l'execution...

Reply

Marsh Posté le 13-05-2003 à 21:30:16    

BENB a écrit :

Bien sur il est possible de ne faire qu'un .lib plutot qu'une DLL, et alors plus de problèmes pour trouver la Dll a l'execution...


 
Oui, je sais...
 
Une SLL en quelque sorte (Static Linked Library :lol: )
 
Yoyo*


---------------
It's nice to be important, but it's more important to be nice
Reply

Marsh Posté le 13-05-2003 à 22:54:38    

Yoyo@ a écrit :


 
Oui, je sais...
 
Une SLL en quelque sorte (Static Linked Library :lol: )
 
Yoyo*


 
ben heuh c comme ca que ca s'appelle hein ?

Reply

Marsh Posté le 14-05-2003 à 16:59:25    

pour savoir où le loader (le système) cherche les DLL dont a besoin ton prog : (par ordre de recherche)
 
1- The directory from which the application loaded.  
2- The current directory.  
3- The system directory. Use the GetSystemDirectory function to get the path of this directory.  
4- The 16-bit system directory. There is no function that obtains the path of this directory, but it is searched.
 
Windows Me/98/95:  This directory does not exist.
 
 
5- The Windows directory. Use the GetWindowsDirectory function to get the path of this directory.  
6- The directories that are listed in the PATH environment variable.


---------------
-( BlackGoddess )-
Reply

Marsh Posté le 14-05-2003 à 20:29:01    

BlackGoddess a écrit :

pour savoir où le loader (le système) cherche les DLL dont a besoin ton prog : (par ordre de recherche)
 
1- The directory from which the application loaded.  
2- The current directory.  
3- The system directory. Use the GetSystemDirectory function to get the path of this directory.  
4- The 16-bit system directory. There is no function that obtains the path of this directory, but it is searched.
 
Windows Me/98/95:  This directory does not exist.
 
 
5- The Windows directory. Use the GetWindowsDirectory function to get the path of this directory.  
6- The directories that are listed in the PATH environment variable.


 
Parfait :) Merci :)
 
Yoyo*
 
PS : Où as tu trouvé cette aide?


---------------
It's nice to be important, but it's more important to be nice
Reply

Marsh Posté le 14-05-2003 à 20:29:01   

Reply

Marsh Posté le 14-05-2003 à 22:02:03    

msdn.microsoft.com ;)
 
(à LoadLibrary, c pour charger une DLL apres le démarrage du prog, mais le système cherche tjs ds le mm ordre)


---------------
-( BlackGoddess )-
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed