Pourquoi linker les librairies

Ziman Messages postés 245 Date d'inscription dimanche 27 avril 2003 Statut Membre Dernière intervention 26 septembre 2008 - 8 sept. 2007 à 20:38
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 - 10 sept. 2007 à 02:10
Bonjour,

cela fait quelques temps que je programme en C et je me pose une question depuis le début et je n'ai pas encore trouvé ma réponse... Je comprend l'interet des #include mais je ne comprend pas pourquoi parfois il faut lier les librairies avec #pragma comment(...), en fait j'aimerai savoir précisément ce qui se passe quand on link une librairie et pourquoi il faut le faire.

Merci pour vos réponses

Apprendre le VB6

8 réponses

luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
8 sept. 2007 à 20:46
Des includes, ca contient rien juste quelques définitions de fonction. Le code associé a ton include est dans la librairie.
0
Ziman Messages postés 245 Date d'inscription dimanche 27 avril 2003 Statut Membre Dernière intervention 26 septembre 2008
8 sept. 2007 à 20:49
Ah d'accord, merci bien pour ton aide :p

Apprendre le VB6
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
9 sept. 2007 à 12:14
Salut,
Le fichier LIB contient une référence des fonctions d'une DLL. Elle contient les noms des fonctions exportées avec leurs points d'entrée, le nombre et types de paramètres à passer etc. Cette référence sera injectée, par l'éditeur de liens, comme table d'import dans l'exécutable à générer. L'implémentation du code se trouve elle dans la DLL associée. Par défaut sous Windows, les compilateurs ajoutent aux projets kernel32.lib, user32.lib, gdi32.lib ect. Ces dernières sont respectivements associées à kernel32.dll, user32.dll et gdi32.dll. Pour utiliser une DLL non reconnue par défaut, on doit ajouter sa LIB  au projet. Sinon, on devra charger la DLL avec LoadLibrary() et récupérer les adresses des fonctions avec GetProcAddress() après avoir défini au préalable un type de pointeur pour chaque fonction à utiliser. Le type de pointeur définit la convention d'appel de la fonction, le paramètre de sortie et les paramètres d'entrée.
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
9 sept. 2007 à 14:08
Ca c'est pour une lib associée à une dll, pour un lib statique, c'est différent.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
9 sept. 2007 à 14:36
luhtor >> Oui. L'auteur de la question n'a pas parlé de lib statique. Sa question se rapporte plutôt à la lib associée à une dll.
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
9 sept. 2007 à 16:13
C'est pas précisé.
0
Ziman Messages postés 245 Date d'inscription dimanche 27 avril 2003 Statut Membre Dernière intervention 26 septembre 2008
10 sept. 2007 à 01:56
Bonjour et merci pour vos réponses.

Je suis venu poser cette question en voyant :

#pragma comment(lib, "ws2_32.lib")

quand j'ai voulu utiliser les sockets. J'ai essayé sans cette ligne, ça ne fonctionnait pas, et comme c'est pas la première fois que j'entend parler du fait de lier les librairies j'avais envie de comprendre, maintenant quelle est la différence entre une librairie statique et un librairie lié à une DLL ?

Apprendre le VB6
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
10 sept. 2007 à 02:10
ws2_32.lib est associée à ws2_32.dll. Une lib statique contient l'implémentation de fonctions. Ces fonctions seront  injectées, par l'éditeur de liens,  dans le code de l'exécutable au lieu d'être appelées dans une dll externe.
0
Rejoignez-nous