Run: export PATH=/c/_32/Python27:/c/GTK+3.6.1/bin:.:/usr/local/bin:/mingw/bin:/bin export PKG_CONFIG_PATH=/c/GTK+3.6.1/lib/pkgconfig export GOBJECT_CFLAGS=-IC:/Gtk+3.6.1/include export GOBJECT_LIBS=-LC:/Gtk+3.6.1/lib export GMODULE_CFLAGS=-IC:/Gtk+3.6.1/include export GMODULE_LIBS=-LC:/Gtk+3.6.1/lib export GLIB_CFLAGS=-IC:/Gtk+3.6.1/include export GLIB_LIBS=-LC:/Gtk+3.6.1/lib export GIO_LIBS=-LC:/Gtk+3.6.1/lib export GIO_CFLAGS=-IC:/Gtk+3.6.1/include In configure script, change: PYTHON_LIBS="-L${py_prefix}/lib -lpython${PYTHON_VERSION}" to: PYTHON_LIBS="-L${py_prefix}/lib -lpython" Run the following configure command: ./configure --prefix=/c/Gtk+3.6.1 --disable-static --enable-shared LDFLAGS="-L/c/Gtk+3.6.1/lib -L/c/Python27/Lib -L/c/_32/Python27/Lib/site-packages -L/c/_32/Python27/libs" CPPFLAGS="-I/c/Gtk+3.6.1/include -I/c/GTK+3.6.1/lib/glib-2.0/include -I/c/Gtk+3.6.1/include/glib-2.0 -I/c/_32/Python27/include" LIBS="-lgobject-2.0.dll -lgio-2.0.dll -lglib-2.0.dll" Then, in all of the generated Makefiles: Makefile m4/Makefile tests/Makefile tests/offsets/Makefile tests/scanner/Makefile tests/repository/Makefile tests/warn/Makefile tests/doctool/Makefile docs/Makefile docs/reference/Makefile run the script at the bottom of this page in order to change: PYTHON_INCLUDES = -IC:\_32\Python27/include/python2.7 PYTHON_LIBS = -LC:\_32\Python27/lib -lpython PYTHON_LIB_LOC = C:\_32\Python27/lib to: PYTHON_INCLUDES = -I/c/_32/Python27/include/python2.7 PYTHON_LIBS = -L/c/_32/Python27/lib -lpython PYTHON_LIB_LOC = /c/_32/Python27/lib Turn on verbosity for 'make' by running 'make V=1'. Before running make, modify giscanner/giscannermodule.c to load msvcr90.dll instead of msvcr71.dll. (Earlier python binaries use msvcr71.dll, but my 2.7 uses msvcr90.dll.) That gets us to: IOError: [Errno 2] No such file or directory: '.\\.libs\\.libs\\_giscanner.pyd' 'cd' to .libs folder, run 'mkdir .libs', 'cd ..'. Copy .libs/_giscanner.pyd to .libs/.libs/_giscanner.pyd and re-run 'make V=1'. Results in: WindowsError: [Error 193] %1 is not a valid Win32 application __END__ use strict; use warnings; my @make = qw( Makefile m4/Makefile tests/Makefile tests/offsets/Makefile tests/scanner/Makefile tests/repository/Makefile tests/warn/Makefile tests/doctool/Makefile docs/Makefile docs/reference/Makefile ); for my $mf(@make) { print "Amending $mf\n"; open RD, '<', $mf or die "Can't open $mf for reading: $!"; open WR, '>', "${mf}_new" or die "Can't open ${mf}_new for writing: $!"; while() { $_ =~ s/PYTHON_INCLUDES = \-Ic:\\_32\\Python27\/include\/python2\.7/PYTHON_INCLUDES = \-I\/c\/_32\/Python27\/include\/python2\.7/; $_ =~ s/PYTHON_LIBS = \-Lc:\\_32\\Python27\/lib \-lpython/PYTHON_LIBS = \-L\/c\/_32\/Python27\/lib \-lpython/; $_ =~ s/PYTHON_LIB_LOC = c:\\_32\\Python27\/lib/PYTHON_LIB_LOC = \/c\/_32\/Python27\/lib/; $_ =~ s/C:\//\/c\//gi; print WR $_; } close RD or die "Couldn't close $mf after reading: $!"; close WR or die "Couldn't close ${mf}_new after writing: $!"; die "Couldn't rename $mf to ${mf}_orig" unless rename $mf, "${mf}_orig"; die "Couldn't rename ${mf}_new to $mf" unless rename "${mf}_new", $mf; }