http://bugs.winehq.org/show_bug.cgi?id=7486
Summary: Result of widl -u includes WINE-only header Product: Wine Version: 0.9.30. Platform: All OS/Version: All Status: UNCONFIRMED Severity: normal Priority: P2 Component: wine-tools AssignedTo: wine-bugs@winehq.org ReportedBy: kevin.kofler@chello.at
widl -u generates a *_i.c file which includes the header <guiddef.h>. That header doesn't exist in MinGW nor in Visual C++. It should include <initguid.h> instead.
Moreover, INITGUID should be defined _before_ including the first RPC header, you get a warning from MinGW about initialized variables declared "extern" otherwise, because the MinGW initguid.h contains this: #define DEFINE_GUID(n,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) GUID_EXT const GUID n GUID_SECT = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}} where GUID_EXT is defined by the MinGW RPC headers, to "extern" if INITGUID is not defined, and to nothing if it is. (I haven't tested how Visual C++ reacts to this one, but I assume defining INITGUID right away is the right thing there too.)
To sum up, the generated *_i.c starts like this: /*** Autogenerated by WIDL 0.9.31 from oleaut.idl - Do not edit ***/
#include <rpc.h> #include <rpcndr.h>
#define INITGUID #include <guiddef.h>
It should start like this instead: /*** Autogenerated by WIDL 0.9.31 from oleaut.idl - Do not edit ***/
#define INITGUID #include <rpc.h> #include <rpcndr.h>
#include <initguid.h>
(This is with WINE 0.9.31 on FC6. The version isn't listed in Bugzilla yet.)