In trying to learn Winsock2 programming with Visual C++ 2005 Pro on Windows XP Pro SP3, I've run into a problem with an apparently corrupt MSWSOCK.dll.
Here's what I've tried so far:
// This is my second attempt at Winsock2 programming
// A console program built from the code given at
// http://www.tenouk.com/Winsock/visualstudio2008ncnwinsock2.html
// MDJ 2010/09/22
// Run on Windows XP Pro machine, version 2002, SP 2
// C++ from Visual Studio 2008 Pro Edition
#include "stdio.h"
#include "winsock2.h"
// MDJ added the include below to further implement Winsock2
// Also added WS2_32.LIB and MSWSOCK.DLL under
// Project|Windock2Test002 Properties|
// Configuration Properties|Linker|Input|
// Additional Dependencies
// Also set Project|Windock2Test002 Properties|
// Configuration Properties|C/C++|Advanced|Compile As
// to Compile as C Code (/TC).
// Got error message:
// 1>LINK : fatal error LNK1104: cannot open file 'MSWSOCK.DLL'
// Therefore: commented out the following include and
// removed the MSWSOCK.DLL from the Additional
// Dependencies list.
// [Build] succeded.
// [Debug|Start Without Debugging] worked.
// Searched system to find MSWSOCK.DLL - 2/6/2010 at:
// C:\WINDOWS\ServicePackFiles\i386\MSWSOCK.DLL.
// Added complete path to Additional Dependencies list.
// Uncommented the following include. Got:
// 1>C:\WINDOWS\ServicePackFiles\i386\MSWSOCK.DLL : fatal error LNK1107: invalid or corrupt file: cannot read at 0x2A8
// Tried earlier 8/4/2004 version at:
// C:\WINDOWS\system32\MSWSOCK.DLL.
// Got same result. Tried 2/6/2010 version at:
// C:\WINDOWS\$NtServicePackUninstall$\MSWSOCK.DLL.
// Got same result.
// Renamed MSWSOCK.DLL to MSWSOCKOld.DLL at:
// C:\WINDOWS\ServicePackFiles\i386\MSWSOCK.DLL and at:
// C:\WINDOWS\system32\MSWSOCK.DLL.
// Downloaded new MSWSOCK.dll from:
// http://www.dll-files.com/dllindex/dll-files.shtml?mswsock
// to C:\downloadsHold\DLLs\mswsock then unzipped.
// Version 11/18/2004 - copied to:
// C:\WINDOWS\ServicePackFiles\i386\MSWSOCK.DLL and
// C:\WINDOWS\system32\MSWSOCK.DLL.
// Changed Additional Dependencies list to:
// C:\WINDOWS\system32\MSWSOCK.DLL. Got:
// 1>C:\WINDOWS\system32\MSWSOCK.DLL : fatal error LNK1107: invalid or corrupt file: cannot read at 0x2A8
#include "mswsock.h"
int main()
{
WORD wVersionRequested;
WSADATA wsaData;
int wsaerr;
// Using MAKEWORD macro, Winsock version request 2.2
wVersionRequested = MAKEWORD(2, 2);
wsaerr = WSAStartup(wVersionRequested, &wsaData);
if (wsaerr != 0)
{
/* Tell the user that we could not find a usable */
/* WinSock DLL.*/
printf("The Winsock dll not found!\n");
return 0;
}
else
{
printf("The Winsock dll found!\n");
printf("The status: %s.\n", wsaData.szSystemStatus);
}
/* Confirm that the WinSock DLL supports 2.2. */
/* Note that if the DLL supports versions greater */
/* than 2.2 in addition to 2.2, it will still return */
/* 2.2 in wVersion since that is the version we */
/* requested. */
if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2 )
{
/* Tell the user that we could not find a usable */
/* WinSock DLL.*/
printf("The dll do not support the Winsock version %u.%u!\n", LOBYTE(wsaData.wVersion),HIBYTE(wsaData.wVersion));
WSACleanup();
return 0;
}
else
{
printf("The dll supports the Winsock version %u.%u!\n", LOBYTE(wsaData.wVersion),HIBYTE(wsaData.wVersion));
printf("The highest version this dll can support: %u.%u\n", LOBYTE(wsaData.wHighVersion), HIBYTE(wsaData.wHighVersion));
}
/* More task... */
return 0;
}
I've also searched the forum here and at the SocialMSDNVisualC++Forum and found no help on this issue.
Any suggestions would be appreciated.
M. David Johnson
Last edited by mdavidjohnson on 22nd September 2010, 5:13 pm; edited 1 time in total (Reason for editing : The include filenames inside the left and right carets don't show up)
Here's what I've tried so far:
// This is my second attempt at Winsock2 programming
// A console program built from the code given at
// http://www.tenouk.com/Winsock/visualstudio2008ncnwinsock2.html
// MDJ 2010/09/22
// Run on Windows XP Pro machine, version 2002, SP 2
// C++ from Visual Studio 2008 Pro Edition
#include "stdio.h"
#include "winsock2.h"
// MDJ added the include below to further implement Winsock2
// Also added WS2_32.LIB and MSWSOCK.DLL under
// Project|Windock2Test002 Properties|
// Configuration Properties|Linker|Input|
// Additional Dependencies
// Also set Project|Windock2Test002 Properties|
// Configuration Properties|C/C++|Advanced|Compile As
// to Compile as C Code (/TC).
// Got error message:
// 1>LINK : fatal error LNK1104: cannot open file 'MSWSOCK.DLL'
// Therefore: commented out the following include and
// removed the MSWSOCK.DLL from the Additional
// Dependencies list.
// [Build] succeded.
// [Debug|Start Without Debugging] worked.
// Searched system to find MSWSOCK.DLL - 2/6/2010 at:
// C:\WINDOWS\ServicePackFiles\i386\MSWSOCK.DLL.
// Added complete path to Additional Dependencies list.
// Uncommented the following include. Got:
// 1>C:\WINDOWS\ServicePackFiles\i386\MSWSOCK.DLL : fatal error LNK1107: invalid or corrupt file: cannot read at 0x2A8
// Tried earlier 8/4/2004 version at:
// C:\WINDOWS\system32\MSWSOCK.DLL.
// Got same result. Tried 2/6/2010 version at:
// C:\WINDOWS\$NtServicePackUninstall$\MSWSOCK.DLL.
// Got same result.
// Renamed MSWSOCK.DLL to MSWSOCKOld.DLL at:
// C:\WINDOWS\ServicePackFiles\i386\MSWSOCK.DLL and at:
// C:\WINDOWS\system32\MSWSOCK.DLL.
// Downloaded new MSWSOCK.dll from:
// http://www.dll-files.com/dllindex/dll-files.shtml?mswsock
// to C:\downloadsHold\DLLs\mswsock then unzipped.
// Version 11/18/2004 - copied to:
// C:\WINDOWS\ServicePackFiles\i386\MSWSOCK.DLL and
// C:\WINDOWS\system32\MSWSOCK.DLL.
// Changed Additional Dependencies list to:
// C:\WINDOWS\system32\MSWSOCK.DLL. Got:
// 1>C:\WINDOWS\system32\MSWSOCK.DLL : fatal error LNK1107: invalid or corrupt file: cannot read at 0x2A8
#include "mswsock.h"
int main()
{
WORD wVersionRequested;
WSADATA wsaData;
int wsaerr;
// Using MAKEWORD macro, Winsock version request 2.2
wVersionRequested = MAKEWORD(2, 2);
wsaerr = WSAStartup(wVersionRequested, &wsaData);
if (wsaerr != 0)
{
/* Tell the user that we could not find a usable */
/* WinSock DLL.*/
printf("The Winsock dll not found!\n");
return 0;
}
else
{
printf("The Winsock dll found!\n");
printf("The status: %s.\n", wsaData.szSystemStatus);
}
/* Confirm that the WinSock DLL supports 2.2. */
/* Note that if the DLL supports versions greater */
/* than 2.2 in addition to 2.2, it will still return */
/* 2.2 in wVersion since that is the version we */
/* requested. */
if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2 )
{
/* Tell the user that we could not find a usable */
/* WinSock DLL.*/
printf("The dll do not support the Winsock version %u.%u!\n", LOBYTE(wsaData.wVersion),HIBYTE(wsaData.wVersion));
WSACleanup();
return 0;
}
else
{
printf("The dll supports the Winsock version %u.%u!\n", LOBYTE(wsaData.wVersion),HIBYTE(wsaData.wVersion));
printf("The highest version this dll can support: %u.%u\n", LOBYTE(wsaData.wHighVersion), HIBYTE(wsaData.wHighVersion));
}
/* More task... */
return 0;
}
I've also searched the forum here and at the SocialMSDNVisualC++Forum and found no help on this issue.
Any suggestions would be appreciated.
M. David Johnson
Last edited by mdavidjohnson on 22nd September 2010, 5:13 pm; edited 1 time in total (Reason for editing : The include filenames inside the left and right carets don't show up)