<div dir="ltr"><div dir="ltr">in netcommon.h we have the following code : <div>...</div><div>1> /* Windows */</div><div>2> #if defined(WINNT) || defined(_WINNT) || defined(__BORLANDC__) || defined(__MINGW32__) || defined(_WIN32_WCE) || defined (_MSC_VER)</div><div>3> #define _MSWSOCK_</div><div>4> <span class="gmail-cp">#include</span> <span class="gmail-cpf"><winsock2.h></span></div><div>5> <span class="gmail-cp">#include</span> <span class="gmail-cpf"><ws2tcpip.h></span></div><div>6> #endif</div><div>7> <span class="gmail-cp">#include</span> <span class="gmail-cpf"><windows.h></span><div><pre><span class="gmail-cp"></span></pre></div></div><div><span class="gmail-cpf">...</span></div><div>From my understanding and this ref. <a href="http://sockets.com/mswsock.htm">http://sockets.com/mswsock.htm</a>, #12,  It looks like the define on line 3 was placed there to allow it's include before windows.h which would include winsock2.h by itself and is included anyway on 7. (No excuse for MS's thiasco here) <br></div><div><br></div><div>When I tried using live555 with another lib that needs one of the functions in mswsock that is not routed to WS2_32.dll, that define disables all of mswsock.h socket extensions and makes it a NOP.</div><div><br></div><div>Both libs build fine and work on their own just fine, but an application using both libs must use both includes. It took a couple of days to find how line 3 serves as a poison pill to the other lib. Visual Studio's ability to show the state of the enabled code is poor and can be missleading.</div><div><br></div><div>I removed line 3 and rebuilt live555 without issue but that is just one console app.</div><div><br></div><div>Is there a "best practice" way to handle this? Something all library writers can agree on? (Other than just switching to Linux, I must build on the big 3 :-) ) </div><div><br></div></div></div>