Error "the procedure entry point Getaddrinfo could not be located in the dynamic link library WS2_32.dll"
-
Hi all, I am calling some methods from the Web service which i have added to my solution. For Example please refer below code. below code is perfectly running fine on XP,Vista but i have tested it on Windows 2000 prof.
line 1: CoInitialize(NULL);
line 2: xyzService::CxyzService test;
line 3: CComBSTR result;
line 4: test.Methodname(CComBSTR(L"0001"),CComBSTR (L"0001"),&result);
line 5: CoUninitialize();if i run this code in Win 2000 it gives below error, "the procedure entry point Getaddrinfo could not be located in the dynamic link library WS2_32.dll" if i comment line no. 4 from above code,it runs properly. This error is arriving due to call of any method in webservice. Please help me to find some solution. Thanks in advance
-
Hi all, I am calling some methods from the Web service which i have added to my solution. For Example please refer below code. below code is perfectly running fine on XP,Vista but i have tested it on Windows 2000 prof.
line 1: CoInitialize(NULL);
line 2: xyzService::CxyzService test;
line 3: CComBSTR result;
line 4: test.Methodname(CComBSTR(L"0001"),CComBSTR (L"0001"),&result);
line 5: CoUninitialize();if i run this code in Win 2000 it gives below error, "the procedure entry point Getaddrinfo could not be located in the dynamic link library WS2_32.dll" if i comment line no. 4 from above code,it runs properly. This error is arriving due to call of any method in webservice. Please help me to find some solution. Thanks in advance
Hi Rahul, Your webservice may be calling the Unicode version of GetAddrInfo. And if you have a look at the MSDN for the GetAddrInfoW Function[^] it states that the minimum operating system is Windows XP with SP2. Windows 2000 should support the ANSI version: getaddrinfo function[^] Best Wishes, -David Delaune
-
Hi Rahul, Your webservice may be calling the Unicode version of GetAddrInfo. And if you have a look at the MSDN for the GetAddrInfoW Function[^] it states that the minimum operating system is Windows XP with SP2. Windows 2000 should support the ANSI version: getaddrinfo function[^] Best Wishes, -David Delaune
hi Randor, thanks for your reply. Actually I am using a service which is made in DotNet(C#) by DotNet Team :). Is it possible to overcome this problem through our client Application(My MFC application)? Regards, Rahul Vaishnav
-
hi Randor, thanks for your reply. Actually I am using a service which is made in DotNet(C#) by DotNet Team :). Is it possible to overcome this problem through our client Application(My MFC application)? Regards, Rahul Vaishnav
-
Hi Rahul, You can use the ANSI version by explicitly calling the GetAddrInfoA function. Make sure that you pass ANSI strings to the function. Best Wishes, -David Delaune
Hi Randor, thanks for reply.. I have done code like below but still i have same problem. :( Please let me know am i coding in the right direction, because this thing is new for me..
WSADATA wsaData;
int iResult;
DWORD dwRetval;
int i = 1;
char *port = "80"; // I am using http protocol
struct addrinfo *result = NULL;
struct addrinfo *ptr = NULL;
struct addrinfo hints;
// Initialize Winsock
iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
if (iResult != 0) {
printf("WSAStartup failed: %d\n", iResult);
return 1;
}//-------------------------------- // Setup the hints address info structure // which is passed to the getaddrinfo() function ZeroMemory( &hints, sizeof(hints) ); hints.ai\_family = AF\_UNSPEC; hints.ai\_socktype = SOCK\_STREAM; hints.ai\_protocol = IPPROTO\_TCP;
//--------------------------------"
// Call getaddrinfo(). If the call succeeds,
// the result variable will hold a linked list
// of addrinfo structures containing response
// informationdwRetval = getaddrinfo("xx.x.xxx.xxx", "80", &hints, &result); if ( dwRetval != 0 ) { printf("getaddrinfo failed with error: %d\\n", dwRetval); WSACleanup(); return 1; }
line 1: CoInitialize(NULL);
line 2: xyzService::CxyzService test;
line 3: CComBSTR result1;
line 4: test.Methodname(CComBSTR(L"0001"),CComBSTR (L"0001"),&result1);
line 5: CoUninitialize();freeaddrinfo(result);
WSACleanup(); -
Hi Randor, thanks for reply.. I have done code like below but still i have same problem. :( Please let me know am i coding in the right direction, because this thing is new for me..
WSADATA wsaData;
int iResult;
DWORD dwRetval;
int i = 1;
char *port = "80"; // I am using http protocol
struct addrinfo *result = NULL;
struct addrinfo *ptr = NULL;
struct addrinfo hints;
// Initialize Winsock
iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
if (iResult != 0) {
printf("WSAStartup failed: %d\n", iResult);
return 1;
}//-------------------------------- // Setup the hints address info structure // which is passed to the getaddrinfo() function ZeroMemory( &hints, sizeof(hints) ); hints.ai\_family = AF\_UNSPEC; hints.ai\_socktype = SOCK\_STREAM; hints.ai\_protocol = IPPROTO\_TCP;
//--------------------------------"
// Call getaddrinfo(). If the call succeeds,
// the result variable will hold a linked list
// of addrinfo structures containing response
// informationdwRetval = getaddrinfo("xx.x.xxx.xxx", "80", &hints, &result); if ( dwRetval != 0 ) { printf("getaddrinfo failed with error: %d\\n", dwRetval); WSACleanup(); return 1; }
line 1: CoInitialize(NULL);
line 2: xyzService::CxyzService test;
line 3: CComBSTR result1;
line 4: test.Methodname(CComBSTR(L"0001"),CComBSTR (L"0001"),&result1);
line 5: CoUninitialize();freeaddrinfo(result);
WSACleanup();Hi Rahul, What happens if you change this line:
dwRetval = getaddrinfo("xx.x.xxx.xxx", "80", &hints, &result);
intodwRetval = **GetAddrInfoA**("xx.x.xxx.xxx", "80", &hints, &result);
[Update] Also... the CComBSTR is going to be a Unicode string so this is all wrong. Best Wishes, -David Delaune -
Hi Randor, thanks for reply.. I have done code like below but still i have same problem. :( Please let me know am i coding in the right direction, because this thing is new for me..
WSADATA wsaData;
int iResult;
DWORD dwRetval;
int i = 1;
char *port = "80"; // I am using http protocol
struct addrinfo *result = NULL;
struct addrinfo *ptr = NULL;
struct addrinfo hints;
// Initialize Winsock
iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
if (iResult != 0) {
printf("WSAStartup failed: %d\n", iResult);
return 1;
}//-------------------------------- // Setup the hints address info structure // which is passed to the getaddrinfo() function ZeroMemory( &hints, sizeof(hints) ); hints.ai\_family = AF\_UNSPEC; hints.ai\_socktype = SOCK\_STREAM; hints.ai\_protocol = IPPROTO\_TCP;
//--------------------------------"
// Call getaddrinfo(). If the call succeeds,
// the result variable will hold a linked list
// of addrinfo structures containing response
// informationdwRetval = getaddrinfo("xx.x.xxx.xxx", "80", &hints, &result); if ( dwRetval != 0 ) { printf("getaddrinfo failed with error: %d\\n", dwRetval); WSACleanup(); return 1; }
line 1: CoInitialize(NULL);
line 2: xyzService::CxyzService test;
line 3: CComBSTR result1;
line 4: test.Methodname(CComBSTR(L"0001"),CComBSTR (L"0001"),&result1);
line 5: CoUninitialize();freeaddrinfo(result);
WSACleanup();Hi Rahul, Change your definitions to the following and the MSVC compiler should link with the correct version of the function: You can keep your call to getaddrinfo.
#define WINVER 0x0500 #define _WIN32_WINNT 0x0500
I just tested this on my Win2k box and your call to getaddrinfo was successful. Best Wishes, -David Delaune -
Hi Rahul, Change your definitions to the following and the MSVC compiler should link with the correct version of the function: You can keep your call to getaddrinfo.
#define WINVER 0x0500 #define _WIN32_WINNT 0x0500
I just tested this on my Win2k box and your call to getaddrinfo was successful. Best Wishes, -David DelauneThankyou friend it is working properly...