0
Error   33  error C2375: 'accept' : redefinition; different linkage C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winsock2.h  1578
Error   34  error C2375: 'bind' : redefinition; different linkage   C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winsock2.h  1600
Error   35  error C2375: 'closesocket' : redefinition; different linkage    C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winsock2.h  1619
Error   36  error C2375: 'connect' : redefinition; different linkage    C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winsock2.h  1638
Error   37  error C2375: 'ioctlsocket' : redefinition; different linkage    C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winsock2.h  1659
Error   38  error C2375: 'getpeername' : redefinition; different linkage    C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winsock2.h  1680
Error   39  error C2375: 'getsockname' : redefinition; different linkage    C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winsock2.h  1701
Error   40  error C2375: 'getsockopt' : redefinition; different linkage C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winsock2.h  1724
Error   41  error C2375: 'htonl' : redefinition; different linkage  C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winsock2.h  1745
Error   42  error C2375: 'htons' : redefinition; different linkage  C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winsock2.h  1762
Error   43  error C2375: 'inet_addr' : redefinition; different linkage  C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winsock2.h  1780
Error   44  error C2375: 'inet_ntoa' : redefinition; different linkage  C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winsock2.h  1797
Error   45  error C2375: 'listen' : redefinition; different linkage C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winsock2.h  1815

These are the error I'm getting while preparing build of my project. What I found from my search is that this could be due to inclusion of windows.h before including winsock2. But I have not included any of these files directly. Thanks in advance for help.

ravi
  • 10,994
  • 1
  • 18
  • 36

2 Answers2

3

I got it solved in following manner. Please let me know any other opinions:-

Error messages reveals that first winsock was included and after that winsock2 got included. Due to which re-definition errors ( as those structures were already encountered by compiler ) were raised by compiler.

I changed order of inclusion in following manner:-

Earlier:-

#ifndef __ZMQ_H_INCLUDED__
#define __ZMQ_H_INCLUDED__

#ifdef __cplusplus
extern "C" {
#endif
#if !defined WINCE
#include <errno.h>
#endif
#include <stddef.h>
#include <stdio.h>
#if defined _WIN32
#include <winsock2.h>                           
#endif

After:-

#ifndef __ZMQ_H_INCLUDED__
#define __ZMQ_H_INCLUDED__

#ifdef __cplusplus
extern "C" {
#endif
#if !defined WINCE
#include <errno.h>
#endif
#include <stddef.h>
#include <stdio.h>
#if defined _WIN32
#ifndef _WINSOCKAPI_                              //ADDED
#include <winsock2.h>                           
#endif                                            //ADDED
#endif
ravi
  • 10,994
  • 1
  • 18
  • 36
2

since windows.h includes winsock.h( the older version of winsock2.h) you have to place any inclusion of winsock2.h(or any file that includes winsock2.h which is zmq.h in this case) before the line:

#include <windows.h>

correct order would be something like this:

.
.
#include "zmq.h"
.
.
#include <windows.h>
Shahin Wolverine
  • 117
  • 1
  • 10