C++编程中执行 cl.exe 时出错应该如何解决?

lydsdz lydsdz 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
ocket\iocpmodesvr.h(14) : fatal error C1083: Cannot open include file: 'mstcpip.h': No such file or directory
执行 cl.exe 时出错.

郁闷。。。。。


源代码是:

// IocpModeSvr.h: interface for the CIocpModeSvr class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_IOCPMODESVR_H__46FFF420_23C3_4356_A88D_AEBDA61EA186__INCLUDED_)
#define AFX_IOCPMODESVR_H__46FFF420_23C3_4356_A88D_AEBDA61EA186__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "ClientList.h"
#include <winsock2.h>
#pragma comment(lib,"ws2_32.lib")
#include <mstcpip.h>

//服务端口
#define SVRPORT 80
//缓冲区大小
#define BUFFER_SIZE 1024 * 4
//接收数据
#define RECV_POSTED 0
//发送数据
#define SEND_POSTED 1
//单句柄数据
typedef struct _PER_HANDLE_DATA
{
unsigned long IpAddr;
SOCKET sClient;
}PER_HANDLE_DATA,*LPPER_HANDLE_DATA;
//IO操作数据
typedef struct _PER_IO_OPERATION_DATA
{
//重叠结构
OVERLAPPED OverLapped;
//数据缓冲区
WSABUF DataBuf;
char Buf[BUFFER_SIZE];
//操作类型表示发送、接收或关闭等
bool OperType;
}PER_IO_OPERATION_DATA,*PPER_IO_OPERATION_DATA;

//回调处理数据函数原型
typedef void __stdcall ProcessRecvData(unsigned long sIP,
SOCKET sClient,
char * pData,
unsigned long DataLength,
void *pContext);

DWORD WINAPI ServerWorkerProc(LPVOID lParam);
DWORD WINAPI ListenProc(LPVOID lParam);

//#################完成端口socket###################
class CIocpModeSvr
{
public:
CIocpModeSvr();
virtual ~CIocpModeSvr();
public:
void *m_pContext;
//初始化
bool Init(ProcessRecvData* pProcessRecvData, void *pContext, unsigned long iSvrPort=SVRPORT);
//反初始化
void UnInit();
/* 用于发送消息的函数组*/
public:

bool SendMsg(SOCKET sClient,char * pData,unsigned long Length);
bool SendMsgToAll(char * pData,unsigned long Length);

bool DisConnectClient(SOCKET sClient);
void DisConnectAll();

void RemoveSocket(SOCKET sClient);
public:
//获得本地Ip地址
const char * GetLocalIpAdd(){
if(IsStart)return HostIpAddr;
else return NULL;
}
//获得服务器使用的端口号
unsigned short GetSvrPort(){
if(IsStart)return m_SvrPort;
else return 0;
}

protected:
int InitNetWork(unsigned int SvrPort=SVRPORT,
char *pHostIpAddress=NULL);

ProcessRecvData* m_pProcessRecvData;
private:
//完成句柄
HANDLE CompletionPort;
//主机IP
char HostIpAddr[32];
//客户信息列表
DCLinkedList<PER_HANDLE_DATA> ClientList;
//客户信息临界保护量
CRITICAL_SECTION cInfoSection;
//服务是否已经启动
bool IsStart;
//侦听SOCKET
SOCKET ListenSocket;
//侦听线程句柄,用于反初始化时销毁侦听线程
HANDLE ListenThreadHandle;
//服务端口
unsigned short m_SvrPort;

friend DWORD WINAPI ServerWorkerProc(LPVOID lParam);
friend DWORD WINAPI ListenProc(LPVOID lParam);
};

#endif // !defined(AFX_IOCPMODESVR_H__46FFF420_23C3_4356_A88D_AEBDA61EA186__INCLUDED_)
...全文
评论 3
收藏 已收藏
分享
返回顶部
lydsdz
C++ 语言 65,214 成员 250,514 内容