首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在2010 C++中生成错误

在2010 C++中生成错误
EN

Stack Overflow用户
提问于 2014-09-23 07:33:07
回答 2查看 2.5K关注 0票数 0
代码语言:javascript
复制
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。但我没有直接包括任何这些文件。提前谢谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-24 08:02:58

我用以下方式解决了这个问题。请告诉我其他的意见:-

错误消息显示,包含了第一个winsock,然后包含了winsock2。由于编译器引发了重新定义错误(因为编译器已经遇到了这些结构)。

我以下列方式改变了列入的顺序:

较早前:-

代码语言:javascript
复制
#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
票数 3
EN

Stack Overflow用户

发布于 2014-09-23 08:44:51

由于windows.h包含winsock.h( winsock2.h的旧版本),所以必须将winsock2.h的任何包含(或包含winsock2.h的任何文件,在本例中为zmq.h )放在行之前:

代码语言:javascript
复制
#include <windows.h>

正确的顺序应该是这样的:

代码语言:javascript
复制
.
.
#include "zmq.h"
.
.
#include <windows.h>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25989436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档