unresolved external symbol __imp__WSACleanup@0" 为什么在工程里选择支持socket就不能正常运行,而建一个不支持socket的工程,我的程序就正常运行了?望高手指教。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 引用Ws2_32.lib没有?在工程里面设置,或者#pragma comment(lib, "Ws2_32.lib") 我刚开始建立了一个支持socket的工程,然后在设置里的link包含ws2_32.lib ,结果出现I:\study\MAC\MACDlg.cpp(311) : error C2065: 'WSAEnumProtocols' : undeclared identifier,即使在文件头加#pragma comment(lib, "ws2_32 ")也没用。但是我建一个不支持socket的工程,头文件包含#include "Winsock2.h",再在link里包含ws2_32.lib 就能正常运行,我搞不明白支持和不支持socket怎么会有这样的差别? #include <Winsock2.h>加上这个尝试下 加上这个是在不支持socket的工程里可以正常运行,但是如果在支持socket的工程里面,加了这个也没有用,不知道为什么,疑惑ing #include "Winsock2.h"解决的是 “ undeclared identifier”错误#pragma comment(lib, "ws2_32 ")解决的是链接错误一个是编译器报的错,一个是连接器报的错。 额,我晕。我知道的,我是想问,为什么在支持socket的工程里,出现'WSAEnumProtocols' : undeclared identifier的错误,即使包含头文件winsock2.h也没用,但是在不支持socket的工程里,包含了头文件winsock2.h就能正常运行为什么支持和不支持socket有这样的差别? #include <Winsock2.h>#pragma comment(lib, "WS2_32.lib") 把#include <winsock2.h>放到最前面 void CMACDlg::OnProt() { WSADATA WSAData; if (WSAStartup(MAKEWORD(2,0),&WSAData)!=0) { return; } int nResult=0; DWORD nLength=0; nResult=WSAEnumProtocols(NULL,NULL,&nLength); if (nResult!=SOCKET_ERROR) { return; } if (WSAGetLastError()!=WSAENOBUFS) { return; } WSAPROTOCOL_INFO*pProtocolInfo=(WSAPROTOCOL_INFO*)new BYTE[nLength]; nRusult=WSAEnumProtocols(NULL,pProtocolInfo,&nLength); if(nResult==SOCKET_ERROR) { delete[] pProtocolInfo; return; } for(int n=0;n<nResult;n++) { m_ctrList.AddString(pProtocolInfo[n],szProtocol); } delete[] pProtocolInfo; WSACleanup;} #include "stdafx.h"#include "MAC.h"#include "MACDlg.h"#include "Iphlpapi.h"#include "Winsock2.h" windows.h这个头文件包含winsock1.0的头文件 把winsock2.h提到最前 errorC2664的问题,困扰我一天了,请指教。 寻求Vc++中类似QQ好友列表的控件 急,郁闷!求教!我修改了AFX_IDS_APP_TITLE串,为什在窗口的标题栏却显示不出来呢? 为什么?帮帮小菜好吗? 请看关于提取数据出现的问题! 循环里加入一句加法运算(value += tmp;),为什么速度一下子就降下来了? 薄荷大大的代码有点问题求 修改 合并256色位图里相近的色算法 我写了一个基于dialog的程序,可是想换成我自己的图标,怎么做呢? 如何才能隐藏MDI的菜单?或者在菜单上贴一幅位图? vs2005使用sdk ListCtrl 无法显示图标
#pragma comment(lib, "Ws2_32.lib")
,即使在文件头加#pragma comment(lib, "ws2_32 ")也没用。但是我建一个不支持socket的工程,头文件包含#include "Winsock2.h",再在link里包含ws2_32.lib 就能正常运行,我搞不明白支持和不支持socket怎么会有这样的差别?
加上这个尝试下
加上这个是在不支持socket的工程里可以正常运行,但是如果在支持socket的工程里面,加了这个也没有用,不知道为什么,疑惑ing
一个是连接器报的错。
额,我晕。我知道的,我是想问,为什么在支持socket的工程里,出现'WSAEnumProtocols' : undeclared identifier的错误,即使包含头文件winsock2.h也没用,但是在不支持socket的工程里,包含了头文件winsock2.h就能正常运行为什么支持和不支持socket有这样的差别?
#pragma comment(lib, "WS2_32.lib")
{ WSADATA WSAData;
if (WSAStartup(MAKEWORD(2,0),&WSAData)!=0)
{
return;
}
int nResult=0; DWORD nLength=0;
nResult=WSAEnumProtocols(NULL,NULL,&nLength);
if (nResult!=SOCKET_ERROR)
{
return;
}
if (WSAGetLastError()!=WSAENOBUFS)
{
return;
}
WSAPROTOCOL_INFO*pProtocolInfo=(WSAPROTOCOL_INFO*)new BYTE[nLength]; nRusult=WSAEnumProtocols(NULL,pProtocolInfo,&nLength);
if(nResult==SOCKET_ERROR)
{
delete[] pProtocolInfo;
return;
}
for(int n=0;n<nResult;n++)
{
m_ctrList.AddString(pProtocolInfo[n],szProtocol);
}
delete[] pProtocolInfo;
WSACleanup;
}
#include "MAC.h"
#include "MACDlg.h"
#include "Iphlpapi.h"
#include "Winsock2.h"