d3c4106d6f6d587ec4b9013692dc1cf6da29c279 still doesn't fix the initial problem (see log below).
There is still another problem in shlobj.h caused by the inclusion on shobjidl.h from an extern C block:
$ cat test.cpp
#include <shlobj.h>
$ wineg++ test.cpp
In file included from /usr/local/include/wine/windows/propsys.h:164,
from /usr/local/include/wine/windows/shobjidl.h:368,
from /usr/local/include/wine/windows/shlobj.h:39,
from test.cpp:1:
/usr/local/include/wine/windows/propkeydef.h: In function ‘bool operator==(const PROPERTYKEY&, const PROPERTYKEY&)’:
/usr/local/include/wine/windows/propkeydef.h:61: error: declaration of C function ‘bool operator==(const PROPERTYKEY&, const PROPERTYKEY&)’ conflicts with
/usr/local/include/wine/windows/guiddef.h:110: error: previous declaration ‘bool operator==(const GUID&, const GUID&)’ here
/usr/local/include/wine/windows/propkeydef.h: In function ‘bool operator!=(const PROPERTYKEY&, const PROPERTYKEY&)’:
/usr/local/include/wine/windows/propkeydef.h:65: error: declaration of C function ‘bool operator!=(const PROPERTYKEY&, const PROPERTYKEY&)’ conflicts with
/usr/local/include/wine/windows/guiddef.h:114: error: previous declaration ‘bool operator!=(const GUID&, const GUID&)’ here
winegcc: g++ failed