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

Dan Kegel dank at
Mon Mar 3 13:52:48 CST 2008

On Mon, Mar 3, 2008 at 8:51 AM, Steven Edwards <winehacker at> wrote:
>  The default search order for the headers on cygwin/mingw is host then
>  Wine so if you just remove or rename the w32api headers you will end
>  up including the Wine headers which may fix the problem.

That did it.  So the full procedure, for the record, is:

1. Download and run the installer from
Use it to install gcc, git, make, flex, and bison.

2. Open a cygwin window

3. Grab a copy of the Wine sources using git as normal

4. Configure wine, build widl, and use it to expand .idl files to .h files.
$ cd wine
$ ./configure
$ cd libs/port; make; cd -
$ cd libs/wpp; make; cd -
$ cd tools/widl; make; cd -
$ cd include; make; cd -

5. cd wine/dlls/oleaut32/tests

5. to avoid conflicts between the win32 headers from wine and from cygwin,
just use the wine ones.  The easiest way to nuke the cygwin ones
is to do
$ mv /usr/include/w32api /usr/include/w32api.x

6. Try compiling and linking your test.  e.g.
$ cd wine/dlls/oleaut32/tests
$ gcc -DSTANDALONE -I../../../include olepicture.c -mno-cygwin
-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.  It should work now.  To run your standalone test, do
$ ./a.exe
If you need more verbose output, do
$ WINETEST_DEBUG=1 ./a.out
That will enable trace() statements.

More information about the wine-devel mailing list