Node-gyp: Build errors relating to winsock on Windows

Created on 14 Sep 2016  路  3Comments  路  Source: nodejs/node-gyp

Hey all,

I've got a couple C++ node modules I maintain. The two projects have nearly identical binding.gyp settings (with the exception of some dependencies). One of them builds fine, the other gives me quite a slew of output:

gyp info it worked if it ends with ok
gyp info using [email protected]
gyp info using [email protected] | win32 | x64
gyp info spawn C:\dev\Python27\python.EXE
gyp info spawn args [ 'C:\\Users\\Scott\\AppData\\Roaming\\npm\\node_modules\\node-gyp\\gyp\\gyp_main.py',
gyp info spawn args   'binding.gyp',
gyp info spawn args   '-f',
gyp info spawn args   'msvs',
gyp info spawn args   '-G',
gyp info spawn args   'msvs_version=auto',
gyp info spawn args   '-I',
gyp info spawn args   'C:\\dev\\shield\\build\\config.gypi',
gyp info spawn args   '-I',
gyp info spawn args   'C:\\Users\\Scott\\AppData\\Roaming\\npm\\node_modules\\node-gyp\\addon.gypi',
gyp info spawn args   '-I',
gyp info spawn args   'C:\\Users\\Scott\\.node-gyp\\4.5.0\\include\\node\\common.gypi',
gyp info spawn args   '-Dlibrary=shared_library',
gyp info spawn args   '-Dvisibility=default',
gyp info spawn args   '-Dnode_root_dir=C:\\Users\\Scott\\.node-gyp\\4.5.0',
gyp info spawn args   '-Dnode_gyp_dir=C:\\Users\\Scott\\AppData\\Roaming\\npm\\node_modules\\node-gyp',
gyp info spawn args   '-Dnode_lib_file=node.lib',
gyp info spawn args   '-Dmodule_root_dir=C:\\dev\\shield',
gyp info spawn args   '--depth=.',
gyp info spawn args   '--no-parallel',
gyp info spawn args   '--generator-output',
gyp info spawn args   'C:\\dev\\shield\\build',
gyp info spawn args   '-Goutput_dir=.' ]
gyp info spawn C:\Program Files (x86)\MSBuild\14.0\bin\msbuild.exe
gyp info spawn args [ 'build/binding.sln',
gyp info spawn args   '/clp:Verbosity=minimal',
gyp info spawn args   '/nologo',
gyp info spawn args   '/p:Configuration=Release;Platform=x64' ]
Building the projects in this solution one at a time. To enable parallel build, please add the "/m" switch.
  common.cc
  session.cc
  general.cc
  keygen.cc
  crypto.cc
  signature.cc
  hash.cc
  shield.cc
  win_delay_load_hook.cc
C:\Program Files (x86)\Windows Kits\8.1\Include\shared\ws2def.h(100): warning C4005: 'AF_IPX': macro redefinition (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(452): note: see previous definition of 'AF_IPX' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\shared\ws2def.h(140): warning C4005: 'AF_MAX': macro redefinition (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(471): note: see previous definition of 'AF_MAX' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\shared\ws2def.h(177): warning C4005: 'SO_DONTLINGER': macro redefinition (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(394): note: see previous definition of 'SO_DONTLINGER' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\shared\ws2def.h(221): error C2011: 'sockaddr': 'struct' type redefinition (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(1002): note: see declaration of 'sockaddr' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\shared\ws2def.h(421): error C2059: syntax error: 'constant' (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
C:\Program Files (x86)\Windows Kits\8.1\Include\shared\ws2def.h(421): error C3805: 'constant': unexpected token, expected either '}' or a ',' (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
C:\Program Files (x86)\Windows Kits\8.1\Include\shared\ws2def.h(556): warning C4005: 'IN_CLASSA': macro redefinition (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(279): note: see previous definition of 'IN_CLASSA' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\shared\ws2def.h(562): warning C4005: 'IN_CLASSB': macro redefinition (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(285): note: see previous definition of 'IN_CLASSB' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\shared\ws2def.h(568): warning C4005: 'IN_CLASSC': macro redefinition (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(291): note: see previous definition of 'IN_CLASSC' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\shared\ws2def.h(579): warning C4005: 'INADDR_ANY': macro redefinition (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(296): note: see previous definition of 'INADDR_ANY' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\shared\ws2def.h(581): warning C4005: 'INADDR_BROADCAST': macro redefinition (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(298): note: see previous definition of 'INADDR_BROADCAST' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\shared\ws2def.h(615): error C2011: 'sockaddr_in': 'struct' type redefinition (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(1006): note: see declaration of 'sockaddr_in' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(136): error C2011: 'fd_set': 'struct' type redefinition (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(1014): note: see declaration of 'fd_set' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(156): warning C4005: 'FD_CLR': macro redefinition (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(89): note: see previous definition of 'FD_CLR' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(171): warning C4005: 'FD_SET': macro redefinition (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(94): note: see previous definition of 'FD_SET' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(180): error C2011: 'timeval': 'struct' type redefinition (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(1030): note: see declaration of 'timeval' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(236): error C2011: 'hostent': 'struct' type redefinition (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(1018): note: see declaration of 'hostent' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(249): error C2011: 'netent': 'struct' type redefinition (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(172): note: see declaration of 'netent' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(256): error C2011: 'servent': 'struct' type redefinition (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(1022): note: see declaration of 'servent' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(268): error C2011: 'protoent': 'struct' type redefinition (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(1026): note: see declaration of 'protoent' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(364): error C2011: 'WSAData': 'struct' type redefinition (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(314): note: see declaration of 'WSAData' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(462): error C2011: 'sockproto': 'struct' type redefinition (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(486): note: see declaration of 'sockproto' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(504): error C2011: 'linger': 'struct' type redefinition (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(1010): note: see declaration of 'linger' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(517): warning C4005: 'SOMAXCONN': macro redefinition (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(536): note: see previous definition of 'SOMAXCONN' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(551): warning C4005: 'FD_READ': macro redefinition (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(554): note: see previous definition of 'FD_READ' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(554): warning C4005: 'FD_WRITE': macro redefinition (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(555): note: see previous definition of 'FD_WRITE' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(557): warning C4005: 'FD_OOB': macro redefinition (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(556): note: see previous definition of 'FD_OOB' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(560): warning C4005: 'FD_ACCEPT': macro redefinition (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(557): note: see previous definition of 'FD_ACCEPT' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(563): warning C4005: 'FD_CONNECT': macro redefinition (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(558): note: see previous definition of 'FD_CONNECT' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(566): warning C4005: 'FD_CLOSE': macro redefinition (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(559): note: see previous definition of 'FD_CLOSE' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(1646): error C2375: 'accept': redefinition; different linkage (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(734): note: see declaration of 'accept' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(1668): error C2375: 'bind': redefinition; different linkage (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(739): note: see declaration of 'bind' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(1689): error C2375: 'closesocket': redefinition; different linkage (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(744): note: see declaration of 'closesocket' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(1706): error C2375: 'connect': redefinition; different linkage (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(746): note: see declaration of 'connect' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(1727): error C2375: 'ioctlsocket': redefinition; different linkage (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(751): note: see declaration of 'ioctlsocket' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(1748): error C2375: 'getpeername': redefinition; different linkage (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(756): note: see declaration of 'getpeername' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(1769): error C2375: 'getsockname': redefinition; different linkage (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(761): note: see declaration of 'getsockname' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(1790): error C2375: 'getsockopt': redefinition; different linkage (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(766): note: see declaration of 'getsockopt' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(1815): error C2375: 'htonl': redefinition; different linkage (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(773): note: see declaration of 'htonl' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(1832): error C2375: 'htons': redefinition; different linkage (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(775): note: see declaration of 'htons' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(1850): error C2375: 'inet_addr': redefinition; different linkage (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(777): note: see declaration of 'inet_addr' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(1868): error C2375: 'inet_ntoa': redefinition; different linkage (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(779): note: see declaration of 'inet_ntoa' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(1968): error C2375: 'listen': redefinition; different linkage (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(781): note: see declaration of 'listen' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(1987): error C2375: 'ntohl': redefinition; different linkage (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(785): note: see declaration of 'ntohl' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(2004): error C2375: 'ntohs': redefinition; different linkage (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(787): note: see declaration of 'ntohs' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(2021): error C2375: 'recv': redefinition; different linkage (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(789): note: see declaration of 'recv' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(2044): error C2375: 'recvfrom': redefinition; different linkage (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(795): note: see declaration of 'recvfrom' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(2071): error C2375: 'select': redefinition; different linkage (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(803): note: see declaration of 'select' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(2096): error C2375: 'send': redefinition; different linkage (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(810): note: see declaration of 'send' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(2119): error C2375: 'sendto': redefinition; different linkage (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(816): note: see declaration of 'sendto' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(2146): error C2375: 'setsockopt': redefinition; different linkage (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(824): note: see declaration of 'setsockopt' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(2171): error C2375: 'shutdown': redefinition; different linkage (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(831): note: see declaration of 'shutdown' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(2191): error C2375: 'socket': redefinition; different linkage (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(835): note: see declaration of 'socket' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(2216): error C2375: 'gethostbyaddr': redefinition; different linkage (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(842): note: see declaration of 'gethostbyaddr' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(2238): error C2375: 'gethostbyname': redefinition; different linkage (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(847): note: see declaration of 'gethostbyname' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(2255): error C2375: 'gethostname': redefinition; different linkage (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(849): note: see declaration of 'gethostname' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(2295): error C2375: 'getservbyport': redefinition; different linkage (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(853): note: see declaration of 'getservbyport' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(2314): error C2375: 'getservbyname': redefinition; different linkage (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(857): note: see declaration of 'getservbyname' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(2333): error C2375: 'getprotobynumber': redefinition; different linkage (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(861): note: see declaration of 'getprotobynumber' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(2350): error C2375: 'getprotobyname': redefinition; different linkage (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(863): note: see declaration of 'getprotobyname' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(2370): error C2375: 'WSAStartup': redefinition; different linkage (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(867): note: see declaration of 'WSAStartup' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(2390): error C2375: 'WSACleanup': redefinition; different linkage (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(871): note: see declaration of 'WSACleanup' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(2407): error C2375: 'WSASetLastError': redefinition; different linkage (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(873): note: see declaration of 'WSASetLastError' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(2424): error C2375: 'WSAGetLastError': redefinition; different linkage (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(875): note: see declaration of 'WSAGetLastError' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(2445): error C2375: 'WSAIsBlocking': redefinition; different linkage (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(877): note: see declaration of 'WSAIsBlocking' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(2463): error C2375: 'WSAUnhookBlockingHook': redefinition; different linkage (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(879): note: see declaration of 'WSAUnhookBlockingHook' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(2481): error C2375: 'WSASetBlockingHook': redefinition; different linkage (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(881): note: see declaration of 'WSASetBlockingHook' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(2499): error C2375: 'WSACancelBlockingCall': redefinition; different linkage (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(883): note: see declaration of 'WSACancelBlockingCall' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(2517): error C2375: 'WSAAsyncGetServByName': redefinition; different linkage (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(885): note: see declaration of 'WSAAsyncGetServByName' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(2545): error C2375: 'WSAAsyncGetServByPort': redefinition; different linkage (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(893): note: see declaration of 'WSAAsyncGetServByPort' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(2573): error C2375: 'WSAAsyncGetProtoByName': redefinition; different linkage (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(901): note: see declaration of 'WSAAsyncGetProtoByName' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(2599): error C2375: 'WSAAsyncGetProtoByNumber': redefinition; different linkage (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(908): note: see declaration of 'WSAAsyncGetProtoByNumber' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(2625): error C2375: 'WSAAsyncGetHostByName': redefinition; different linkage (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(915): note: see declaration of 'WSAAsyncGetHostByName' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(2651): error C2375: 'WSAAsyncGetHostByAddr': redefinition; different linkage (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(922): note: see declaration of 'WSAAsyncGetHostByAddr' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(2681): error C2375: 'WSACancelAsyncRequest': redefinition; different linkage (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(931): note: see declaration of 'WSACancelAsyncRequest' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock2.h(2699): error C2375: 'WSAAsyncSelect': redefinition; different linkage (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(933): note: see declaration of 'WSAAsyncSelect' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\um\mswsock.h(151): error C2011: '_TRANSMIT_FILE_BUFFERS': 'struct' type redefinition (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(945): note: see declaration of '_TRANSMIT_FILE_BUFFERS' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\shared\ws2ipdef.h(76): error C2079: 'sockaddr_gen::Address' uses undefined struct 'sockaddr' (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
C:\Program Files (x86)\Windows Kits\8.1\Include\shared\ws2ipdef.h(77): error C2079: 'sockaddr_gen::AddressIn' uses undefined struct 'sockaddr_in' (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
C:\Program Files (x86)\Windows Kits\8.1\Include\shared\ws2ipdef.h(120): warning C4005: 'IP_TOS': macro redefinition (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(344): note: see previous definition of 'IP_TOS' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\shared\ws2ipdef.h(121): warning C4005: 'IP_TTL': macro redefinition (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(343): note: see previous definition of 'IP_TTL' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\shared\ws2ipdef.h(122): warning C4005: 'IP_MULTICAST_IF': macro redefinition (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(338): note: see previous definition of 'IP_MULTICAST_IF' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\shared\ws2ipdef.h(123): warning C4005: 'IP_MULTICAST_TTL': macro redefinition (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(339): note: see previous definition of 'IP_MULTICAST_TTL' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\shared\ws2ipdef.h(124): warning C4005: 'IP_MULTICAST_LOOP': macro redefinition (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(340): note: see previous definition of 'IP_MULTICAST_LOOP' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\shared\ws2ipdef.h(125): warning C4005: 'IP_ADD_MEMBERSHIP': macro redefinition (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(341): note: see previous definition of 'IP_ADD_MEMBERSHIP' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\shared\ws2ipdef.h(126): warning C4005: 'IP_DROP_MEMBERSHIP': macro redefinition (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(342): note: see previous definition of 'IP_DROP_MEMBERSHIP' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\shared\ws2ipdef.h(127): warning C4005: 'IP_DONTFRAGMENT': macro redefinition (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(345): note: see previous definition of 'IP_DONTFRAGMENT' (compiling source file ..\src\shield.cc)
C:\Program Files (x86)\Windows Kits\8.1\Include\shared\ws2ipdef.h(202): error C2079: '_SOCKADDR_INET::Ipv4' uses undefined struct 'sockaddr_in' (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
C:\Program Files (x86)\Windows Kits\8.1\Include\shared\ws2ipdef.h(715): error C2011: 'ip_mreq': 'struct' type redefinition (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
  C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(355): note: see declaration of 'ip_mreq' (compiling source file ..\src\shield.cc)
C:\Users\Scott\.node-gyp\4.5.0\include\node\uv.h(996): error C2079: 'uv_interface_address_s::address4' uses undefined struct 'sockaddr_in' (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
C:\Users\Scott\.node-gyp\4.5.0\include\node\uv.h(1000): error C2079: 'uv_interface_address_s::netmask4' uses undefined struct 'sockaddr_in' (compiling source file ..\src\shield.cc) [C:\dev\shield\build\shield.vcxproj]
gyp ERR! build error 
gyp ERR! stack Error: `C:\Program Files (x86)\MSBuild\14.0\bin\msbuild.exe` failed with exit code: 1
gyp ERR! stack     at ChildProcess.onExit (C:\Users\Scott\AppData\Roaming\npm\node_modules\node-gyp\lib\build.js:276:23)
gyp ERR! stack     at emitTwo (events.js:87:13)
gyp ERR! stack     at ChildProcess.emit (events.js:172:7)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
gyp ERR! System Windows_NT 6.1.7601
gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Users\\Scott\\AppData\\Roaming\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild"
gyp ERR! cwd C:\dev\shield
gyp ERR! node -v v4.5.0
gyp ERR! node-gyp -v v3.4.0
gyp ERR! not ok 

This same output is generated by two different build machines:

  • One running Windows 7 with Visual Studio 2015 Professional, Windows SDK 8.1, Python 2.7.12.
  • One running Windows 7 with only npm install -g windows-build-tools

It's worth noting this code builds perfectly on Linux and OSX, so I'm at a bit of a loss. I'm sure I've done something wrong, but after hours of scouring my code, I just can't find it. Can anyone give me any idea why this might be happening?

Most helpful comment

I've resolved this. It was caused by me including node.h _after_ I had included <openssl/err.h>. My guess is that libuv uses Winsock2, and OpenSSL uses Winsock1, and if you include version 1 before version 2, bad things happen. Cheers :)

All 3 comments

I've resolved this. It was caused by me including node.h _after_ I had included <openssl/err.h>. My guess is that libuv uses Winsock2, and OpenSSL uses Winsock1, and if you include version 1 before version 2, bad things happen. Cheers :)

Hi similar problem occured to me while building my qt project. Am using openssl as well as libssh in my project. I never included node.h in my project file. So what should i do.
My project worked well when i installed libssh and openssl through vcpkg - libssh version 0.7.6-1 and openssl v1.0.2q.
Wen I moved to never libssh and openssl version the above problem occured.
With openssl alone my app works, when including libssl my app throws lots of error.

I found the solution. Though I didnt use any of the winsock2.h or windows.h header files in my application. I found the header files shuffled in libssh library and I had to make changes(first winsock2.h then windows.h) in source code and build it once again freshly. It worked for me.

Was this page helpful?
0 / 5 - 0 ratings