解决Winsock2.h和afxsock.h定义冲突的办法

时间:2022-01-24 07:24:18

如果我们在工程中使用了afxsock.h,但在其它的地方又加了些 使用winsock2.h,哈哈,VC会告诉你一大堆错误,大意就是有定义重复,该怎么解决?

由于MFC的SOCKET类使用的是Winsock1.1,而Winsock2.h是2.0的版本,两个版本中的一些定义就会出现冲突,解决的方式就是在stdafx.h中先定义winsock2.h,然后在定义afxsock.h

使用时还需要加载库文件:#pragma comment(lib, "ws2_32.lib")

#if !defined(AFX_STDAFX_H__57EF9120_2A16_4B54_9878_0A0B41C2B505__INCLUDED_) #define AFX_STDAFX_H__57EF9120_2A16_4B54_9878_0A0B41C2B505__INCLUDED_

#if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000

#define VC_EXTRALEAN   // Exclude rarely-used stuff from Windows headers

#include <afxwin.h>          // MFC core and standard components #include <afxext.h>          // MFC extensions #include <afxdisp.h>         // MFC Automation classes #include <afxdtctl.h>   // MFC support for Internet Explorer 4 Common Controls #ifndef _AFX_NO_AFXCMN_SUPPORT #include <afxcmn.h>    // MFC support for Windows Common Controls #endif // _AFX_NO_AFXCMN_SUPPORT

#include <Winsock2.h> #include <afxsock.h>   // MFC socket extensions

//{{AFX_Insert_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_STDAFX_H__57EF9120_2A16_4B54_9878_0A0B41C2B505__INCLUDED_)