Building dlls/oleaut32/tests/olepicture.c under Cygwin?

Dan Kegel dank at
Mon Mar 3 10:09:44 CST 2008

I tried building dlls/oleaut32/tests/olepicture.c
on Windows using cygwin, but ran into a couple small problems.
The main problem is:

undefined reference to `_IPictureDisp_Invoke'

That sounds fishy - is that test using a wine-specific shortcut?
If so, what's the kosher windows way to do what it's doing?

Here's the procedure I followed:

1. Download and run the installer from
Use it to install gcc and git
2. Open a cygwin window
3. Grab a copy of the Wine sources using git as normal
4. cd wine/dlls/oleaut32/tests
5. to avoid conflicts between the win32 headers from wine and from cygwin,
just use the cygwin ones.  But we do have to copy one header from wine:
 mkdir -p include/wine
 cp ../../../include/wine/test.h include/wine
6. Try compiling and linking with
$ gcc -DSTANDALONE -Iinclude olepicture.c -mwindows -loleaut32 -lole32 -luuid
This fails with all sorts of errors about LOGFONTA.
That's because the include lines in olepicture.c are in the wrong order!
Edit olepicture.c and change the lines

#include <winuser.h>
#include <wingdi.h>

to read

#include <wingdi.h>
#include <winuser.h>

7. Try compiling again.  Now you fail with a handful of errors like
/cygdrive/c/DOCUME~1/Liz/LOCALS~1/Temp/ccXL7SF3.o:olepicture.c:(.text+0x18e5): u
ndefined reference to `_IPictureDisp_Invoke'

Seems like a portability problem in tests/olepicture.c.

More information about the wine-devel mailing list