[ITA] w32api-3.0b_svn5368-1

Jon TURNEY jon.turney@dronecode.org.uk
Thu Aug 23 16:52:00 GMT 2012

On 22/08/2012 10:08, JonY wrote:
> On 8/22/2012 06:26, JonY wrote:
>>> According to mingw.org <basetyps.h>, GUID_SECT was only necessary for
>>> ancient GCC versions.  At a minimum, we should be able to just remove
>>> the GUID_SECT from those defines.  Unfortunately just ifndef _W64 those
>>> defines entirely leads to link errors:
>>> hw/xwin/winengine.c:107: undefined reference to `_IID_IDirectDraw4'
>>> winshaddd.o: In function `winAllocateFBShadowDD':
>>> hw/xwin/winshaddd.c:253: undefined reference to `_IID_IDirectDraw2'
>>> winshadddnl.o: In function `winAllocateFBShadowDDNL':
>>> hw/xwin/winshadddnl.c:285: undefined reference to `_IID_IDirectDraw4'
>>> winpfbdd.o: In function `winAllocateFBPrimaryDD':
>>> hw/xwin/winpfbdd.c:89: undefined reference to `_IID_IDirectDraw2'

It's pretty easy to adapt for this in the existing X server code either by
simply defining GUID_SECT as empty if it is not already defined, or removing

>> mingw-w64 ddraw.h already has them, though they're inlined, gcc doesn't
>> like inlined data. DEFINE_GUID may need fixing, or at least instanced in
>> libuuid or libddraw.
>> I'll need to talk to to the Jacek from Wine to get a solution.
> Here's a quick and dirty workaround, add and compile the following file
> and link it with the failing executable:
> =====================
> #define INITGUID 1
> #include <ddraw.h>
> =====================

It's tempting to conclude that the "brokeness" alluded to in the comment in
the X server source is that the author didn't know about INITGUID.

It seems that GUID_SECT is defined by the current w32api headers, but only had
any contents for ancient gcc (prior to 2.95)

However, Google seems to indicate that we are not totally alone in assuming
the existence of GUID_SECT, so you might want to consider providing an empty
definition for compatibility.

More information about the Cygwin-apps mailing list