VS2008编译错误,带有<;winsock2.h>; 当尝试编译我的VS2008 C++项目时,获得了105的重新定义和语法错误。运行64位Windows 7。 我在谷歌上搜索过,答案似乎很一致,但对我来说似乎不起作用

VS2008编译错误,带有<;winsock2.h>; 当尝试编译我的VS2008 C++项目时,获得了105的重新定义和语法错误。运行64位Windows 7。 我在谷歌上搜索过,答案似乎很一致,但对我来说似乎不起作用,c++,visual-studio-2008,visual-c++,sockets,C++,Visual Studio 2008,Visual C++,Sockets,已尝试将\include放在\include之前。还尝试了不包含(因为winsock2会在缺少时自动包含它) 使用#define WIN32_LEAN_和_MEAN和/或#define_WINSOCKAPI之前的版本进行了尝试 在linker->additional dependencies中,我引用了ws2_32.lib。 还尝试了#pragma注释(lib,“ws2_32.lib”) 我重建了整个解决方案以防万一 常见错误(似乎很多人都有此错误): …等等,等等 任何建议都将不胜感激。我有一

已尝试将
\include
放在
\include
之前。还尝试了不包含
(因为winsock2会在缺少时自动包含它)

使用
#define WIN32_LEAN_和_MEAN
和/或
#define_WINSOCKAPI
之前的版本进行了尝试

在linker->additional dependencies中,我引用了ws2_32.lib。 还尝试了
#pragma注释(lib,“ws2_32.lib”)

我重建了整个解决方案以防万一

常见错误(似乎很多人都有此错误):

…等等,等等

任何建议都将不胜感激。

我有一个“WinsockWrapper.h”标题,可以帮助我确保一致性。。。其要点是,

#ifndef _WINDOWS_
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#undef WIN32_LEAN_AND_MEAN
#endif

#include <winsock2.h>

#pragma comment(lib, "ws2_32.lib")
\ifndef\u窗口_
#定义WIN32_精益_和_平均值
#包括
#未定义WIN32\u精益\u和\u平均值
#恩迪夫
#包括
#pragma注释(lib,“ws2_32.lib”)
在任何需要winsock2.h的文件中,在可能引入windows.h的任何其他文件之前,请先包含此文件

这意味着将它放在大多数需要winsock2.h的文件的顶部


如果您正在使用预编译头,请确保它也有这个头。

这是一个众所周知的问题。不知何故,MS使winsock.h和winsock2.h不兼容。MSVC 6中存在此问题

这只是您包含的文件之一,其中还包括winsock.h,而稍后您将包括winsock2.h


解决此问题的方法之一是首先包括winsock2.h。甚至在windows.h之前(它将自动包括windows.h)

结果是在项目的其他地方(单独的.h文件)被调用,并且在上面的.h文件之前。这就是我因为编码太晚而得到的。谢谢你的帮助,谢谢

我用替换了调用,现在工作正常

包括随机开始,然后再给我出问题(每隔编译一次)。我用#ifdef(u WIN32)对它进行了封装,但它似乎仍然是随机的。在上次成功编译(每隔一次)并重新启动VS2008之后保存了项目,似乎已经“修复”了它。该错误是内部链接器错误(已引用mms库)

#ifndef _WINDOWS_
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#undef WIN32_LEAN_AND_MEAN
#endif

#include <winsock2.h>

#pragma comment(lib, "ws2_32.lib")