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.
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.
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 ?
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.