7
votes

C ++ En-tête Fichiers pour UDP dans Windows?

J'ai une application Linux qui envoie des données via le protocole UDP. Il utilise ces fichiers d'en-tête: xxx

Je veux faire une version Windows de mon application. Mais certains des fichiers d'en-tête ci-dessus ne fonctionnent pas dans Windows, en particulier ceux pour UDP.

quels fichiers d'en-tête dois-je les substituer à Windows (Visual Studio 2010)?

Mise à jour:

OK, mon en-tête ressemble maintenant à ceci: xxx

i obtenir cette erreur lorsque vous essayez de compiler (et de nombreuses autres erreurs similaires): xxx


0 commentaires

4 Réponses :


7
votes

commenter les fichiers inclus qui sont "manquants" ou mettez-les dans les éléments suivants:

#ifdef _WIN32
#define WIN32_LEAN_AND_MEAN 1
#include <winsock2.h>
#include <windows.h>
#else
// unix includes here
#endif


0 commentaires

15
votes

Au moment de la compilation, vous devez utiliser winsock2.h au lieu des en-têtes UNIX.

à link-time, inclure ws2_32.lib pour fournir un lien à la DLL système requise.


3 commentaires

J'ai ajouté le ws2_32.lib à liker -> Entrée -> dépendances supplémentaires et ajouté la ligne #include . Maintenant, je reçois de nombreuses erreurs Swhen, j'essaie de compiler des compilations telles que: "Erreur 13 Erreur C2011: 'FD_SET':" Struct 'Type de redéfinition C: \ Program Files (x86) \ Microsoft SDKS \ Windows \ V7.0A \ Inclure \ WINSOCK2. h 132 1 client "


Sauf s'il est évident où le DUP provenait du texte d'erreur, vous pouvez compiler (l'un des) le (s) module (s) avec / p pour obtenir la sortie prétraitée et savoir où fd_set < / code> est multiplié défini. Voir MSDN.MicRosoft.com/en-us/ Bibliothèque / 8z9Z0BX6 (v = vs.100) .aspx


@Richard - Assurez-vous que winsock2.h précède windows.h si vous y compris les deux, par l'autre réponse. Assurez-vous que d'autres fichiers ne tirent pas dans windows.h antérieurs. Arrivée dans stdafx.h et les en-têtes OpenGL.



5
votes

Vous n'avez pas besoin de la plupart de celles-ci inclut. Le seul fichier dont vous aurez besoin est winsock2.h et de lien avec ws2_32.lib . .

Donc, pour tous les éléments de réseautage, incluez simplement winsock2.h .


1 commentaires

Ou vous pouvez préférer WS2TCPIP.H, il existe une différence subtile avec certains appels d'API.



4
votes

vous voulez #incluez winsock2.h. Une particularité, vous devez #include avant y compris autre chose, y compris: xxx


0 commentaires