为什么仅在Eclipse调试模式下获得无效的套接字?

时间:2018-06-25 12:35:53

标签: c++ eclipse mingw

在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;
}

1 个答案:

答案 0 :(得分:1)

我自己找到的。我删除了工作区并创建了一个新的工作区。随着新的运行。我不知道发生了什么。