Roumen Petrov wrote:
> Michael Stahl wrote:
>> Rob Richards wrote:
>>> Michael Stahl wrote:
>>>> Rob Richards wrote:
>>>>   
>>>>>>       
>>> </snip>
>>>>>>   
>>>>>>       
>>>>> I think I finally understand what you are trying to do. You are building 
>>>>> on Win 2003 with VS 2005 and then trying to use the lib on on Win2K or 
>>>>> lower and it is there that it is failing to link?
>>>>>     
>>>> well, it fails to link with vs 2005 already because libxml (using 2.6.31 
>>>> here) is not linked against ws2_32.dll, so ld (or whatever msft calls its 
>>>> equivalent) complained that getaddrinfo and freeaddrinfo are undefined 
>>>> symbols.
>>>>   
>>> I get it now and thought that was only an issue with VS 2008. Can you 
>>> try building from SVN or even a snapshot. The lib was added just after 
>>> the .31 release.
>> ok, i have built a snapshot (downloaded friday iirc). building works, and 
>> the dll is linked against ws2_32.dll.
>>
>>>>> Can you try the following patch?
>>>>> Index: wsockcompat.h
>>>>> ===================================================================
>>>>> --- wsockcompat.h    (revision 3721)
>>>>> +++ wsockcompat.h    (working copy)
>>>>> @@ -21,6 +21,7 @@
>>>>>  
>>>>>  /* Check if ws2tcpip.h is a recent version which provides getaddrinfo() 
>>>>> */
>>>>>  #if defined(GetAddrInfo)
>>>>> +#include <wspiapi.h>
>>>>>  #define HAVE_GETADDRINFO
>>>>>  #endif
>>>>>  #endif
>>>>>     
>>>> ah yes, that seems to work fine here, and is obviously the cleaner way to 
>>>> do it.
>>>>   
>>> If the build from SVN fixes the initial problem, can you try using it on 
>>> w Win2K machine? It's possible that the patch might not be needed though 
>>> after more research I have doubts. I'm looking around here for an old OS 
>>> to test on as well. I'm pretty sure I have an old VM image lying around 
>>> here somewhere.
>> so today i finally got access to a win2k machine. the result:
>> with 2.6.31+my patch, the application runs.
>> with the snapshot, the application fails to run, and displays a message 
>> box complaining that ws2_32.dll could not be found.
>>
>> so, i would suggest you revert the patch that introduced linking to 
>> ws2_32.dll, and use wspapi.h instead.
>>
>> regards
>> michael
>>
> 
> Michael,
> If "my patch" is you patch first posted to the list I think that you 
> understand that patch break libxml2 build on other platforms. Is you 
> "suggestion" to broke libxml2 intentional ?

errm, no, by "my patch" i meant the general approach of including the 
header wspiapi.h _instead_of_ linking against ws2_32.dll, however that may 
be implemented so that it works on all supported platforms. i have merely 
told how i could get it to work on my setup (building on win2k3 and 
deploying on win2k), and that the status quo does _not_ work in this 
setup. i will leave the details to those who actually know something about 
win32.

> 
> Rob,
> may be the problem can be resolved with this proof of concept code:
> do {
>    /* resolve getaddrinfo at run time instead at compile time */
>    h  = LoadLibraryA("ws2_32");
>    if (h != NULL) {
>      f = GetProcAddress(h, "getaddrinfo");
>      if (f == NULL) {
>        FreeLibrary(h);
>        h = NULL;
>      } else {
>        /* */
>      }
>    }
>    h  = LoadLibraryA("wship6");
>    if (h != NULL) {
>      f = GetProcAddress(h, "getaddrinfo");
>      if (f == NULL) {
>        FreeLibrary(h);
>        h = NULL;
>      } else {
>        call f ....
>      }
>    }
>    /* fail-back to gethostbyname */
>    ....
> } while (0);
> 
> 
> As I understand wship6 is not default on platforms before nt 5.1.
> 
> Roumen

well, the msdn page for getaddrinfo claims that this is basically what the 
macro in wspiapi.h does.

michael

-- 
"Experience is that marvelous thing that enables you recognize a
  mistake when you make it again." -- F. P. Jones

_______________________________________________
xml mailing list, project page  http://xmlsoft.org/
[email protected]
http://mail.gnome.org/mailman/listinfo/xml

Reply via email to