I have created a socket wrapper class but I have too many errors that I cannot figure out how to solve. I tried Winsock tutorial error and Can't include Winsock2.h in MSVC 2010, but no use
Here is the code :
//#define WIN32_LEAN_AND_MEAN
#include <iostream>
#include <string>
#include <Windows.h>
#include <WinSock2.h>
#include <WS2tcpip.h>
#pragma comment(lib,"ws2_32_lib")
using namespace std;
#define WM_SOCKET 0x10000
class Socket
{
};
Here are the errors:
Error 107 error C3861: 'WSAStartup': identifier not found \85 1 Project2_SocketLib
Error 89 error C3861: 'WSASetLastError': identifier not found C:\Program Files (x86)\Windows Kits\8.0\Include\um\WS2tcpip.h 696 1 Project2_SocketLib
Error 90 error C3861: 'WSASetLastError': identifier not found C:\Program Files (x86)\Windows Kits\8.0\Include\um\WS2tcpip.h 703 1 Project2_SocketLib
Error 91 error C3861: 'WSASetLastError': identifier not found C:\Program Files (x86)\Windows Kits\8.0\Include\um\WS2tcpip.h 742 1 Project2_SocketLib
Error 92 error C3861: 'WSASetLastError': identifier not found C:\Program Files (x86)\Windows Kits\8.0\Include\um\WS2tcpip.h 749 1 Project2_SocketLib
Error 93 error C3861: 'WSASetLastError': identifier not found C:\Program Files (x86)\Windows Kits\8.0\Include\um\WS2tcpip.h 793 1 Project2_SocketLib
Error 94 error C3861: 'WSASetLastError': identifier not found C:\Program Files (x86)\Windows Kits\8.0\Include\um\WS2tcpip.h 800 1 Project2_SocketLib
Error 95 error C3861: 'WSASetLastError': identifier not found C:\Program Files (x86)\Windows Kits\8.0\Include\um\WS2tcpip.h 841 1 Project2_SocketLib
Error 96 error C3861: 'WSASetLastError': identifier not found C:\Program Files (x86)\Windows Kits\8.0\Include\um\WS2tcpip.h 848 1 Project2_SocketLib
Error 109 error C3861: 'WSAGetLastError': identifier not found \87 1 Project2_SocketLib
Error 112 error C3861: 'WSAGetLastError': identifier not found \93 1 Project2_SocketLib
Error 105 error C3861: 'WSACleanup': identifier not found \63 1 Project2_SocketLib
Error 103 error C3861: 'shutdown': identifier not found \57 1 Project2_SocketLib
Error 100 error C3861: 'send': identifier not found \37 1 Project2_SocketLib
Error 101 error C3861: 'send': identifier not found \43 1 Project2_SocketLib
Error 98 error C3861: 'recv': identifier not found \31 1 Project2_SocketLib
Error 99 error C3861: 'recv': identifier not found \34 1 Project2_SocketLib
Error 116 error C3861: 'inet_ntoa': identifier not found \115 1 Project2_SocketLib
Error 119 error C3861: 'htons': identifier not found \137 1 Project2_SocketLib
Error 126 error C3861: 'htonl': identifier not found \139 1 Project2_SocketLib
Error 104 error C3861: 'closesocket': identifier not found \58 1 Project2_SocketLib
Error 102 error C3861: 'accept': identifier not found \50 1 Project2_SocketLib
Error 6 error C3805: 'constant': unexpected token, expected either '}' or a ',' C:\Program Files (x86)\Windows Kits\8.0\Include\shared\ws2def.h 414 1 Project2_SocketLib
Error 108 error C2568: '+' : unable to resolve function overload \87 1 Project2_SocketLib
Error 111 error C2568: '+' : unable to resolve function overload \93 1 Project2_SocketLib
Error 124 error C2568: ':' : unable to resolve function overload \139 1 Project2_SocketLib
Error 125 error C2446: ':' : no conversion from 'unsigned long (__stdcall *)(const char *)' to 'u_long (__stdcall *)(u_long)' \139 1 Project2_SocketLib
Error 106 error C2440: '=' : cannot convert from 'WSADATA' to 'int' \75 1 Project2_SocketLib
Error 110 error C2440: '=' : cannot convert from 'SOCKET (__stdcall *)(int,int,int)' to 'SOCKET' \90 1 Project2_SocketLib
Error 115 error C2440: '=' : cannot convert from 'char *(__stdcall *)(in_addr)' to 'std::string' \115 1 Project2_SocketLib
Error 66 error C2375: 'WSAUnhookBlockingHook' : redefinition; different linkage C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 2383 1 Project2_SocketLib
Error 61 error C2375: 'WSAStartup' : redefinition; different linkage C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 2296 1 Project2_SocketLib
Error 63 error C2375: 'WSASetLastError' : redefinition; different linkage C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 2332 1 Project2_SocketLib
Error 67 error C2375: 'WSASetBlockingHook' : redefinition; different linkage C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 2400 1 Project2_SocketLib
Error 65 error C2375: 'WSAIsBlocking' : redefinition; different linkage C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 2366 1 Project2_SocketLib
Error 64 error C2375: 'WSAGetLastError' : redefinition; different linkage C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 2349 1 Project2_SocketLib
Error 62 error C2375: 'WSACleanup' : redefinition; different linkage C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 2315 1 Project2_SocketLib
Error 68 error C2375: 'WSACancelBlockingCall' : redefinition; different linkage C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 2417 1 Project2_SocketLib
Error 75 error C2375: 'WSACancelAsyncRequest' : redefinition; different linkage C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 2592 1 Project2_SocketLib
Error 76 error C2375: 'WSAAsyncSelect' : redefinition; different linkage C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 2612 1 Project2_SocketLib
Error 70 error C2375: 'WSAAsyncGetServByPort' : redefinition; different linkage C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 2466 1 Project2_SocketLib
Error 69 error C2375: 'WSAAsyncGetServByName' : redefinition; different linkage C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 2439 1 Project2_SocketLib
Error 72 error C2375: 'WSAAsyncGetProtoByNumber' : redefinition; different linkage C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 2517 1 Project2_SocketLib
Error 71 error C2375: 'WSAAsyncGetProtoByName' : redefinition; different linkage C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 2492 1 Project2_SocketLib
Error 73 error C2375: 'WSAAsyncGetHostByName' : redefinition; different linkage C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 2542 1 Project2_SocketLib
Error 74 error C2375: 'WSAAsyncGetHostByAddr' : redefinition; different linkage C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 2569 1 Project2_SocketLib
Error 53 error C2375: 'socket' : redefinition; different linkage C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 2120 1 Project2_SocketLib
Error 52 error C2375: 'shutdown' : redefinition; different linkage C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 2099 1 Project2_SocketLib
Error 51 error C2375: 'setsockopt' : redefinition; different linkage C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 2077 1 Project2_SocketLib
Error 50 error C2375: 'sendto' : redefinition; different linkage C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 2051 1 Project2_SocketLib
Error 49 error C2375: 'send' : redefinition; different linkage C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 2026 1 Project2_SocketLib
Error 48 error C2375: 'select' : redefinition; different linkage C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 2002 1 Project2_SocketLib
Error 47 error C2375: 'recvfrom' : redefinition; different linkage C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 1976 1 Project2_SocketLib
Error 46 error C2375: 'recv' : redefinition; different linkage C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 1951 1 Project2_SocketLib
Error 45 error C2375: 'ntohs' : redefinition; different linkage C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 1931 1 Project2_SocketLib
Error 44 error C2375: 'ntohl' : redefinition; different linkage C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 1914 1 Project2_SocketLib
Error 43 error C2375: 'listen' : redefinition; different linkage C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 1896 1 Project2_SocketLib
Error 35 error C2375: 'ioctlsocket' : redefinition; different linkage C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 1658 1 Project2_SocketLib
Error 42 error C2375: 'inet_ntoa' : redefinition; different linkage C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 1795 1 Project2_SocketLib
Error 41 error C2375: 'inet_addr' : redefinition; different linkage C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 1778 1 Project2_SocketLib
Error 40 error C2375: 'htons' : redefinition; different linkage C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 1761 1 Project2_SocketLib
Error 39 error C2375: 'htonl' : redefinition; different linkage C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 1744 1 Project2_SocketLib
Error 38 error C2375: 'getsockopt' : redefinition; different linkage C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 1723 1 Project2_SocketLib
Error 37 error C2375: 'getsockname' : redefinition; different linkage C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 1700 1 Project2_SocketLib
Error 57 error C2375: 'getservbyport' : redefinition; different linkage C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 2221 1 Project2_SocketLib
Error 58 error C2375: 'getservbyname' : redefinition; different linkage C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 2240 1 Project2_SocketLib
Error 59 error C2375: 'getprotobynumber' : redefinition; different linkage C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 2258 1 Project2_SocketLib
Error 60 error C2375: 'getprotobyname' : redefinition; different linkage C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 2275 1 Project2_SocketLib
Error 36 error C2375: 'getpeername' : redefinition; different linkage C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 1679 1 Project2_SocketLib
Error 56 error C2375: 'gethostname' : redefinition; different linkage C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 2181 1 Project2_SocketLib
Error 55 error C2375: 'gethostbyname' : redefinition; different linkage C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 2163 1 Project2_SocketLib
Error 54 error C2375: 'gethostbyaddr' : redefinition; different linkage C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 2144 1 Project2_SocketLib
Error 34 error C2375: 'connect' : redefinition; different linkage C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 1637 1 Project2_SocketLib
Error 33 error C2375: 'closesocket' : redefinition; different linkage C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 1618 1 Project2_SocketLib
Error 32 error C2375: 'bind' : redefinition; different linkage C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 1599 1 Project2_SocketLib
Error 31 error C2375: 'accept' : redefinition; different linkage C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 1577 1 Project2_SocketLib
Error 118 error C2228: left of '.sin_port' must have class/struct/union \137 1 Project2_SocketLib
Error 120 error C2228: left of '.sin_family' must have class/struct/union \138 1 Project2_SocketLib
Error 121 error C2228: left of '.sin_addr' must have class/struct/union \139 1 Project2_SocketLib
Error 122 error C2228: left of '.S_un' must have class/struct/union \139 1 Project2_SocketLib
Error 123 error C2228: left of '.S_addr' must have class/struct/union \139 1 Project2_SocketLib
Error 114 error C2227: left of '->sin_addr' must point to class/struct/union/generic type \115 1 Project2_SocketLib
Error 97 error C2079: 'Socket::wsaData' uses undefined struct 'WSAData' \18 1 Project2_SocketLib
Error 117 error C2079: 'sockAddrIn' uses undefined struct 'sockaddr_in' \135 1 Project2_SocketLib
Error 78 error C2079: 'sockaddr_gen::AddressIn' uses undefined struct 'sockaddr_in' C:\Program Files (x86)\Windows Kits\8.0\Include\shared\ws2ipdef.h 81 1 Project2_SocketLib
Error 77 error C2079: 'sockaddr_gen::Address' uses undefined struct 'sockaddr' C:\Program Files (x86)\Windows Kits\8.0\Include\shared\ws2ipdef.h 80 1 Project2_SocketLib
Error 87 error C2079: '_SOCKADDR_INET::Ipv4' uses undefined struct 'sockaddr_in' C:\Program Files (x86)\Windows Kits\8.0\Include\shared\ws2ipdef.h 202 1 Project2_SocketLib
Error 5 error C2059: syntax error : 'constant' C:\Program Files (x86)\Windows Kits\8.0\Include\shared\ws2def.h 414 1 Project2_SocketLib
Error 113 error C2027: use of undefined type 'sockaddr_in' \115 1 Project2_SocketLib
Error 21 error C2011: 'WSAData' : 'struct' type redefinition C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 353 1 Project2_SocketLib
Error 16 error C2011: 'timeval' : 'struct' type redefinition C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 169 1 Project2_SocketLib
Error 22 error C2011: 'sockproto' : 'struct' type redefinition C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 451 1 Project2_SocketLib
Error 12 error C2011: 'sockaddr_in' : 'struct' type redefinition C:\Program Files (x86)\Windows Kits\8.0\Include\shared\ws2def.h 608 1 Project2_SocketLib
Error 4 error C2011: 'sockaddr' : 'struct' type redefinition C:\Program Files (x86)\Windows Kits\8.0\Include\shared\ws2def.h 217 1 Project2_SocketLib
Error 19 error C2011: 'servent' : 'struct' type redefinition C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 245 1 Project2_SocketLib
Error 20 error C2011: 'protoent' : 'struct' type redefinition C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 257 1 Project2_SocketLib
Error 18 error C2011: 'netent' : 'struct' type redefinition C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 238 1 Project2_SocketLib
Error 23 error C2011: 'linger' : 'struct' type redefinition C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 493 1 Project2_SocketLib
Error 88 error C2011: 'ip_mreq' : 'struct' type redefinition C:\Program Files (x86)\Windows Kits\8.0\Include\shared\ws2ipdef.h 715 1 Project2_SocketLib
Error 17 error C2011: 'hostent' : 'struct' type redefinition C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 225 1 Project2_SocketLib
Error 13 error C2011: 'fd_set' : 'struct' type redefinition C:\Program Files (x86)\Windows Kits\8.0\Include\um\WinSock2.h 125 1 Project2_SocketLib
Error 127 error C1003: error count exceeds 100; stopping compilation \139 1 Project2_SocketLib
I made sure that an #include "Winsock2.h" is before any #include "windows.h" and "#include "Winsock.h" and this solved the case.
Just a matter of patience, look at includes one by one and establish this order, first #include "Winsock2.h" then #include "windows.h"
I checked the recursive includes, I spotted the header files which include (recursively) some #include "windows.h" and "#include "Winsock.h"and write a#include "Winsock2.h". in this files, i added#include "Winsock2.h"` as the first include.
You can't include Windows.h before you include WinSock2, as this will lead the windows header to include an older version of winsock. Remove the Windows.h include altogether.
See, for instance, this MSDN link: http://msdn.microsoft.com/en-us/library/windows/desktop/ms737629(v=vs.85).aspx The Note part under the first code block explains this.
You need to re-order the includes of the Windows headers like so:
In other words, the WinSock headers must be included before
Windows.h
.Or define
WIN32_LEAN_AND_MEAN
which you have commented out for some reason.I think you will also need to change the
Accept
method to returnSOCKET
rather thanSocket
.And the
#pragma
should be: