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 ?


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
_______________________________________________
xml mailing list, project page  http://xmlsoft.org/
[email protected]
http://mail.gnome.org/mailman/listinfo/xml

Reply via email to