La réponse courte est que vous ne pouvez pas. Il n'y a pas de bibliothèque static winsock, vous pouvez seulement appeler wsock32.dll. De la même manière que vous ne pouvez pas lier statiquement à user32 ou kernel32. Il y a des choses en interne avec wsock32.dll qui sont nécessairement différentes sur différentes versions de Windows, et même des service packs différents sur les mêmes versions de Windows, donc une liaison statique serait un peu un cauchemar. Wsock32.dll est présent sur toutes les versions de Windows qui ont TCP/IP installé, cependant, avec la même interface, de sorte qu'il n'y aurait aucun avantage de liaison statique de toute façon.
Winsock n'est pas toujours présent. Si vous voulez prendre en charge les très vieux ordinateurs Windows 95, qui n'ont pas TCP/IP installé, ils n'ont pas winsock.dll etc. Vous pouvez toujours voir des ordinateurs comme ça dans les configurations techniques ou industrielles, qui doivent être entretenus. Une fois j'ai dû envoyer une palette complète de CD à la destruction parce que je supposais que la DLL de winsock était présente sur tous les ordinateurs. –
Bien que cela puisse être vrai, c'est un point plutôt discutable; Si le système d'exploitation n'a pas TCP/IP installé, rien de ce que vous faites avec Winsock lié à TCP/IP ne fonctionnera, que vous utilisiez la DLL ou non, sauf si vous installez votre propre implémentation de TCP/IP. – Gerald
Si vous n'utilisez que TCP/IP à des fins facultatives, mais que le système doit également pouvoir fonctionner sans TCP/IP, le problème est que votre application dépend de la présence de TCP/IP. Notre application était pour les écoles primaires, et avait fonctionné parfaitement pendant longtemps. Ensuite, nous avons ajouté la possibilité d'envoyer/recevoir des informations via TCP/IP, et tout à coup la hotline de soutien s'est allumée ... l'application n'a pas démarré car notre fichier exe dépendait de winsock.dll ... nous devions jeter tous les CD restants et changez l'application pour charger winsock dynamiquement. –