Hi Jesse,
Jesse Allen schreef:
Maartan,
In a patch committed on 10 Jul 2008, includes: Add video mixing
renderer header, it included a construct that autogenerates this piece
of code for strmif.h
"
typedef struct tagVMRGUID {
GUID *pGUID;
GUID GUID;
} VMRGUID;
"
Unfortunately any C++ file that includes that header seems to miscompile.
"
#include <strmif.h>
"
produces with wineg++
In file included from blarg.c:1:
/home/jesse/build/wine/include/strmif.h:8972: error: declaration of
'GUID tagVMRGUID::GUID'
/home/jesse/build/wine/include/guiddef.h:31: error: changes meaning of
'GUID' from 'typedef struct _GUID GUID'
winegcc: g++ failed
This is also a problem in the DXSDK when compiling with g++, I
suppose. This is explained here:
http://home.clara.net/raoulgough/vidmodem/dshow.html
I tried patching the vmrender.idl similar to this:
"
typedef struct tagVMRGUID
{
#if defined(__cplusplus)
GUID *pGUID, ::GUID;
#else
GUID *pGUID, GUID;
#endif
} VMRGUID;
"
Judging by that link you sent me, shouldn't it be:
typedef struct tagVMRGUID
{
#if defined(__cplusplus)
::GUID *pGUID, GUID;
#else
GUID *pGUID, GUID;
#endif
} VMRGUID;
Or am i reading that link wrong?
But no go. It still produces the same problem. Obviously you can't
have the ::GUID prefixed and work on gcc as much as you can have the
GUID GUID in g++. But I think we will need it, otherwise I will just
have to hack the strmif.h everytime.
Can you take a look at the problem? I think we will want this to work
for winelib on g++ as it's pretty well dependent.
Main problem is of course the msvc compiler doesn't have that problem,
but if that ifdef works perhaps it's possible to have it like that.
Cheers,
Maarten.