diff --git a/configure b/configure
index 61218b2b1f2d79d62b8126335c84d91abe0d7962..f2537542743d10a558c27c563dd34e9759ee129b 100755
--- a/configure
+++ b/configure
@@ -191,6 +191,10 @@ dv1394="no"
 ffserver="no"
 network="no"
 mingw32="yes"
+LIBPREF=""
+LIBSUF=".lib"
+SLIBPREF=""
+SLIBSUF=".dll"
 ;;
 CYGWIN*)
 v4l="no"
@@ -885,6 +889,9 @@ if test "$mmx" = "yes" ; then
   echo "#define HAVE_MMX 1" >> $TMPH
   echo "#define __CPU__ 586" >> $TMPH
 fi
+if test "$mingw32" = "yes" ; then
+  echo "TARGET_MINGW32=yes" >> config.mak
+fi
 if test "$builtin_vector" = "yes" ; then
   echo "TARGET_BUILTIN_VECTOR=yes" >> config.mak
   echo "#define HAVE_BUILTIN_VECTOR 1" >> $TMPH
diff --git a/libavcodec/os_support.h b/libavcodec/os_support.h
index 93930f03bacac49be4b942bd36a3c4d0535d28da..ef895b1d51095db94c2e7f3d296bb9826bec848d 100644
--- a/libavcodec/os_support.h
+++ b/libavcodec/os_support.h
@@ -12,7 +12,8 @@
 
 #ifdef __MINGW32__
 #  undef DATADIR /* clashes with /usr/include/w32api/objidl.h */
-#  include <windows.h>
+__declspec(dllimport) void __stdcall Sleep(unsigned long dwMilliseconds);
+// #  include <windows.h>
 #  define usleep(t)    Sleep((t) / 1000)
 #endif
 
diff --git a/libavformat/Makefile b/libavformat/Makefile
index 256edeccc74fbf2ac02ace48a80d0768c849175b..e064cf613b83b6a4bc889eac4ad0159ba39b734f 100644
--- a/libavformat/Makefile
+++ b/libavformat/Makefile
@@ -80,7 +80,12 @@ $(LIB): $(OBJS) $(PPOBJS)
 	$(RANLIB) $@
 
 $(SLIB): $(OBJS)
-	$(CC) $(SHFLAGS) -o $@ $(OBJS) $(PPOBJS) $(EXTRALIBS) $(AMREXTRALIBS)
+ifeq ($(TARGET_MINGW32),yes)
+	$(CC) $(SHFLAGS) -Wl,--output-def,$(@:.dll=.def) -o $@ $(OBJS) $(PPOBJS) $(EXTRALIBS) $(AMREXTRALIBS) $(VPATH)/../libavcodec/avcodec.dll
+	-lib /machine:i386 /def:$(@:.dll=.def)
+else
+	$(CC) $(SHFLAGS) -o $@ $(OBJS) $(PPOBJS) $(EXTRALIBS) $(AMREXTRALIBS) 
+endif
 
 depend: $(SRCS)
 	$(CC) -MM $(CFLAGS) $^ 1>.depend