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这些是我在准备我的项目构建时遇到的错误。我从我的搜索中发现,这可能是因为在包含winsock2之前包含了windows.h。但我没有直接包括任何这些文件。提前谢谢你的帮助。
发布于 2014-09-24 08:02:58
我用以下方式解决了这个问题。请告诉我其他的意见:-
错误消息显示,包含了第一个winsock,然后包含了winsock2。由于编译器引发了重新定义错误(因为编译器已经遇到了这些结构)。
我以下列方式改变了列入的顺序:
较早前:-
#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发布于 2014-09-23 08:44:51
由于windows.h包含winsock.h( winsock2.h的旧版本),所以必须将winsock2.h的任何包含(或包含winsock2.h的任何文件,在本例中为zmq.h )放在行之前:
#include <windows.h>正确的顺序应该是这样的:
.
.
#include "zmq.h"
.
.
#include <windows.h>https://stackoverflow.com/questions/25989436
复制相似问题