В eclipse C ++ я получил неверный сокет при запуске режима отладки.
Ошибка WSAEPROVIDERFAILEDINIT.
Я получил эту ошибку при использовании только отладчика. Начиная с run, создание сокета прошло успешно.
В VisualStudio один и тот же код выполняется в режиме отладки и выпуска.
Отладка с помощью eclipse и mingw работает нормально, когда сокет не используется.
Кажется, это проблема с конфигурацией gdb, потому что eclipse использует один и тот же exe-файл независимо от того, запускаю ли я с run или с отладкой (нет изменения метки времени, на котором я меняю конфигурацию).
Конфигурация: eclipse 4.6.3, Mingw32-gcc-g ++ V6.3.0-1, я связал libws2_32 из \ Mingw \ lib, под Windows 10, 64-битная версия.
\ 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;
}