Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[C++] winsock2.h 44 błędy


braders

Rekomendowane odpowiedzi

Opublikowano

Witam postanowiłem pobawić się trochę w programowanie sieciowe lecz po dodaniu

#include <winsock2.h>

wyskakują mi 44 błędy związane z tym plikiem.

 

 

Tutaj kilka błędów:

Error 1 error C2011: 'fd_set' : 'struct' type redefinition c:\program files\microsoft visual studio 10.0\vc\include\winsock2.h 61 
 
 
Error 7 error C2011: 'servent' : 'struct' type redefinition c:\program files\microsoft visual studio 10.0\vc\include\winsock2.h 161 
 
 
Error 40 error C2091: function returns function c:\program files\microsoft visual studio 10.0\vc\include\winsock2.h 545 
 
 
Error 69 error C2371: 'BLOB' : redefinition; different basic types c:\program files\microsoft visual studio 10.0\vc\include\winsock2.h 833 
 
 
Error 50 error C2371: 'DECLARE_STDCALL_P' : redefinition; different basic types c:\program files\microsoft visual studio 10.0\vc\include\winsock2.h 555 
 
 
Error 70 error C2371: 'LPBLOB' : redefinition; different basic types c:\program files\microsoft visual studio 10.0\vc\include\winsock2.h 833 
 
 
Error 49 error C2556: 'int (__cdecl *DECLARE_STDCALL_P(hostent *))(const char *)' : overloaded function differs only by return type from 'int (__cdecl *DECLARE_STDCALL_P(hostent *))(const char *,int,int)' c:\program files\microsoft visual studio 10.0\vc\include\winsock2.h 555 
 
 
Error 45 error C2733: second C linkage of overloaded function 'DECLARE_STDCALL_P' not allowed c:\program files\microsoft visual studio 10.0\vc\include\winsock2.h 554 
 
 
Error 42 error C3646: 'gethostbyaddr' : unknown override specifier c:\program files\microsoft visual studio 10.0\vc\include\winsock2.h 554 
 
 
Error 41 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:\program files\microsoft visual studio 10.0\vc\include\winsock2.h 545
Pytałem się na innym forum lecz nikt mi nie mógł pomóc.
Mój kod wygląda następująco

#include <cstdio>
#include <cstdlib>
 
#include <winsock2.h>
 
int main()
{
}

Moje IDE to visual c++ 2010.
Opublikowano

Pod CodeBlocks:
Dodaj do linker'a plik: <Folder_z_CB>\MinGW\lib\libws2_32.a

Jeżeli nie zadziała dodaj: <Folder_z_CB>\MinGW\lib\libwsock32.a

 

@edit
Przepraszam za spam, nie doczytałem posta.

Weteran
Opublikowano

Autor wyraźnie napisał, że pracuje w visual c++ 2010, a nie w żadnym code blocks.

Poza tym, tu w ogóle nie o to chodzi.

Błąd wygląda tak:

Error 1 error C2011: 'fd_set' : 'struct' type redefinition c:\program files\microsoft visual studio 10.0\vc\include\winsock2.h 61 

Czyli chodzi o to, że nastąpiła ponowna definicja tego samego typu.

Jesteś pewien, że nie dołączasz niczego innego oprócz winsock2, cstdlib i cstdio? W projekcie nie masz innych plików? Próbowałeś może przeinstalować IDE?

Opublikowano

Nie dodaje nic oprócz tych trzech includów.

A co do IDE to, przeinstalowałem je kilka tygodni temu jak mi coś w nim się pokręciło ale spróbuje jeszcze raz.

Przeinstalowanie nic nie dało.

 

Nie mam innych plików tylko main.cpp.

Weteran
Opublikowano

Sprawdź czy ten kod ci się kompiluję:

#include <Windows.h>
#pragma comment(lib, "Ws2_32.lib")

int main()
{
	SOCKET s = socket(0, 0, 0);
}
Opublikowano
Error 2 error LNK1207: incompatible PDB format in 'C:\Documents and Settings\xp\moje dokumenty\visual studio 2010\Projects\win serwer\Debug\win serwer.pdb'; delete and rebuild C:\Documents and Settings\xp\moje dokumenty\visual studio 2010\Projects\win serwer\win serwer\LINK
Weteran
Opublikowano

Zrób to co ci każe, tzn. build->clean solution, build->rebuild solution, jak nadal będzie ten sam błąd, to stwórz nowy projekt.

Opublikowano

Ok działa.

Tylko mam takie pytania.

Po pierwsze ,

dlaczego nie trzeba dodawać includa?

Po drugie,

czy tą linijkę

#pragma comment(lib, "Ws2_32.lib")

mogę zastąpić wpisując lib'a w ustawienia projektu.

Weteran
Opublikowano

Nie musisz dodawać winsock2.h, gdyż nagłowek windows.h robi to za nas.

 

Tak, możesz to zrobić w opcjach projektu, ale tak jest prościej i jest to bardziej zalecana metoda.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...