Closed
Bug 83976
Opened 24 years ago
Closed 24 years ago
Compilation problems in activex control with Microsoft Platform SDK.
Categories
(Core Graveyard :: Embedding: ActiveX Wrapper, defect)
Tracking
(Not tracked)
VERIFIED
FIXED
mozilla0.9.2
People
(Reporter: wtc, Assigned: adamlock)
References
Details
Attachments
(1 file)
1.28 KB,
patch
|
Details | Diff | Splinter Review |
I have the February 2001 Edition of Microsoft Platform SDK
installed on my Windows 2000 PC. The Platform SDK has some
system headers that are supposed to be newer than the system
headers included with Visual C++ 6.0. With the Platform SDK
headers, I have two compilation problems in
mozilla/embedding/browser/activex/src/control/.
The first problem is a known problem with InlineIsEqualGUID()
and Microsoft has a recommended workaround. It is described
in Microsoft Knowledge Base Article ID Q243298
(http://support.microsoft.com/support/kb/articles/Q243/2/98.ASP).
The second problem is caused by the inclusion of winsock.h by
windows.h, which prevents StdAfx.h from including winsock2.h.
In the version windows.h in Visual C++ 6.0, it includes either
winsock2.h or winsock.h depending on the value of the _WIN32_WINNT
macro:
#if(_WIN32_WINNT >= 0x0400)
#include <winsock2.h>
#include <mswsock.h>
#else
#include <winsock.h>
#endif /* _WIN32_WINNT >= 0x0400 */
I believe this is why StdAfx.h defines _WIN32_WINNT to
be 0x0400.
In the version of windows.h in the Platform SDK, the
above code has become simply the following:
#include <winsock.h>
I don't know why. I didn't find any articles about this
in the Microsoft Knowledge Base. There are three possible
workarounds.
1. In StdAfx.h, make sure that we include winsock2.h
before we include windows.h. Note that we include
windows.h indirectly via the inclusion of atlbase.h.
This solution requires that the headers be included
in a specific order.
2. In StdAfx.h, define the macro _WINSOCKAPI_ to prevent
the inclusion of winsock.h in windows.h. This is
what winsock2.h does. I don't like this solution
because _WINSOCKAPI_ is an undocumented macro
(the include-once macro in winsock.h).
3. In StdAfx.h, define WIN32_LEAN_AND_MEAN. This prevents
windows.h from including a bunch of headers, including
winsock2.h and winsock.h. We will need to include the
headers that we need explicitly though.
I like solution #1 the best.
I will attach a patch containing Microsoft's recommended
workaround for the first problem and solution #1 for
the second problem..
Reporter | ||
Comment 1•24 years ago
|
||
Reporter | ||
Updated•24 years ago
|
Keywords: mozilla0.9.2,
review
Hi Wan-Teh,
You patch builds cleanly on my non-SDK enhanced VC6++ as well. I'm happy to give
you r=adamlock and a= for check in or would you rather I did the checkin?
Reporter | ||
Comment 3•24 years ago
|
||
Hi Adam,
Thank you for your review. Could you check in the patch please?
My mozilla tree is on my PC at home. :-)
Reassign
![]() |
||
Comment 5•24 years ago
|
||
sr=blizzard
![]() |
||
Comment 6•24 years ago
|
||
a=blizzard for drivers for the trunk
Fix is checked in.
I actually ran into compile problems with moving winsock2.h but I didn't see
them yesterday because I made the change to the wrong StdAfx.h. Therefore
instead of moving the #include I have just deleted it. This appears to have no
affect on my machines or tinderbox. Can you verify that your machine with the
Platform SDK builds without winsock2.h?
Status: NEW → RESOLVED
Closed: 24 years ago
Resolution: --- → FIXED
Reporter | ||
Comment 8•24 years ago
|
||
You are right. I just put the winsock2.h inclusion back,
rebuilt *without* the Platform SDK headers, and could not
compile StdAfx.cpp. I have had a lot of problem with
winsock2.h before and resorted to just including windows.h,
which includes winsock2.h if _WIN32_WINNT is 0x0400 or higher.
If you don't need winsock2.h, it is a good idea to just
delete it. In fact, that was one of the solutions I tried.
I verified that I could build just fine with Platform SDK
headers. Thank you for your help.
Status: RESOLVED → VERIFIED
Updated•14 years ago
|
Product: Core → Core Graveyard
You need to log in
before you can comment on or make changes to this bug.
Description
•