LINK DEF/LIB

Signaler
Messages postés
63
Date d'inscription
samedi 9 avril 2005
Statut
Membre
Dernière intervention
4 mai 2007
-
Messages postés
15
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
26 mars 2006
-
Bonjour,

Je decouvre un peu toutes les histoires de Link et tout ca sous VC++, et je voulais savoir.
Lorsque l'on crée un projet, on lui ajoute des fichiers C et H.
Si on a un fichier .DEF qui contient un certain nombre de references à des fonctions (fonction que j'utilisqe a priori dans mes fichier C).
Je dois inclure a mon projet le fichier DEF et une quelquonque librairie ? ou alors le fichier DEF peut s'utiliser tout seul.
C'est ca que je pige pas bien. Est ce que le DEF doit s'accompagner obligatoirement d'une DLL ou d'un LIB.

Merci beaucoup !

3 réponses

Messages postés
15
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
26 mars 2006

Les fichiers DEF servent à déclarer à ton compilateur quelles fonctions, variables ou classes doivent être exportées par ta DLL.
Je ne sais pas si un fichier DEF permet de charger une DLL.

Un LIB contient toutes les déclarations d'une DLL, et permet de l'importer simplement en incluant le LIB dans le dossier Ressources (et en copiant la DLL dans tes dossiers Debug et Release ou plus simplement System32).

Mais tout ce dont tu as besoin pour importer une DLL c'est de la DLL elle-même. Le Lib te permet seulement de ne pas avoir à importer chaque fonction dans ton code.
Messages postés
63
Date d'inscription
samedi 9 avril 2005
Statut
Membre
Dernière intervention
4 mai 2007

DOnc, dans mon projet, je dois bien importer le DLL ET le DEF pour que mon projet sache quels sont les fonctions qui doivent etre exportés..?
Messages postés
15
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
26 mars 2006

???
Je crois qu'il y a confusion. Si tu veux creer une DLL, tu exportes des fonctions, et il te faut un DEF pour indiquer quelles fonctions sont accessibles dans ta DLL ou utiliser la macro vs : declspec(__exportdll)

Si tu veux lier une DLL, donc utiliser des fonctions deja crées, il faut les importer. Pour ca, il te faut soit :
- un LIB fourni avec la DLL
- utiliser LoadLibrary
- utiliser declspec(__importdll)