在Eclipse C ++中,启动调试模式时收到无效的套接字。 错误是WSAEPROVIDERFAILEDINIT。 仅在使用调试器时出现此错误。从运行开始,套接字的创建成功。 在VisualStudio中,相同的代码在调试和发布模式下运行。
在不使用套接字的情况下,使用eclipse和mingw进行调试可以正常工作。
gdb的配置似乎有问题,因为如果我从运行或调试开始,eclipse会使用相同的exe独立程序(更改配置的时间戳没有变化)。
配置为:eclipse 4.6.3,Mingw32-gcc-g ++ V6.3.0-1,我在Windows 10 64bit下从\ Mingw \ lib链接了libws2_32。
\ Mingw \ bin被添加到Windows下和Eclipse本身的路径变量中。
这是代码:
#include <iostream>
#include <windows.h>
#include <winsock2.h>
using namespace std;
int main()
{
WORD sockVer = MAKEWORD(2, 0);
WSADATA wsaData;
SOCKET listener;
SOCKADDR_IN servInfo;
servInfo.sin_family = AF_INET;
servInfo.sin_addr.s_addr = INADDR_ANY;
servInfo.sin_port = htons(80);
WSAStartup(sockVer, &wsaData);
listener = socket(servInfo.sin_family, SOCK_STREAM, IPPROTO_TCP);
if (listener == INVALID_SOCKET)
{
int lastErr = WSAGetLastError();
cout << "Error = " << lastErr << endl;
}
else
{
cout << "Listener = " << listener << endl;
}
return 0;
}
答案 0 :(得分:1)
我自己找到的。我删除了工作区并创建了一个新的工作区。随着新的运行。我不知道发生了什么。