2013-07-22 21 views
5

Jestem zdezorientowany kilka rzeczy o winsock.Winsock2.h vs winsock2.h i wsock32.lib vs ws2_32.lib

Po pierwsze, jaka jest różnica pomiędzy tym Winsock2.h vs winsock2.h (czapki 'w')

drugie, jaka jest różnica pomiędzy łączeniem z wsock32.lib z ws2_32.lib?

Próbowałem kilka kombinacji i powodują błędy czasu kompilacji. Czy ktoś może mi wyjaśnić logiczne uzasadnienie tego, co należy użyć?

Dzięki Nick

Odpowiedz

9

Nie ma różnicy między Winsock2.h i winsock2.h. Nazwy plików nie uwzględniają wielkości liter w typowych systemach plików Windows. Plik ws2_32.lib jest dla Winsock 2, a wsock32.lib dla przestarzałej, starszej wersji.

+0

Dodatek: Winsock 2 (ws2_32.lib) jest rozszerzeniem do Winsock 1 (wsock32.dll). Program, który obecnie działa przeciwko wsock32.dll, powinien nadal działać poprawnie po ponownym połączeniu z ws2_32.dll. –

+0

Przykład multicastu HawkNL (hawksoft.com/hawknl) nie działa podczas łączenia z ws2_32.lib, ale będzie działał z wsock32.lib. Jednak po aktualizacji # include do nowej biblioteki staje się itd., Wszystko zaczyna działać. –

3

Jak pokazano tutaj: https://technet.microsoft.com/en-us/library/cc958787.aspx, wsock32.dll i wsock.dll są muszle Kompatybilność wstecz dla w2_32.dll

Można użyć Wsock32.dll kątem zgodności z Win95, lub wsock.dll dla zachowania kompatybilności z Win3 .11 :) Ale zwykle są one używane przez programy Win95 i Win3.11 dla kompatybilności z win2K +

wsock32.lib oraz w2_32.lib zawierają listę wyeksportowanych funkcji i elementów danych z bibliotek dołączanych dynamicznie.

Uwaga: niektóre różnice między wsock32 i ws_32 mogą być nieoczekiwane. Na przykład wsock32 uruchomi funkcję winsock w wersji 2.2 API - ale aby uzyskać wersję 2.0, potrzebujesz w2_32.