diff -Naur a/src/Makefile.in b/src/Makefile.in
--- a/src/Makefile.in	2016-05-11 13:10:51.816673752 +1200
+++ b/src/Makefile.in	2016-05-11 13:33:52.743812049 +1200
@@ -184,10 +184,14 @@
 	  if test -s $$i ; then \
 	   if echo $$i | grep dll; then \
 	    $(INSTALL_LIBRARY) $$i $(DESTDIR)$(bindir); \
-	   fi; \
-	   $(INSTALL_LIBRARY) $$i $(DESTDIR)$(libdir); \
+	   else \
+	    $(INSTALL_LIBRARY) $$i $(DESTDIR)$(libdir); \
+	   fi \
 	  fi \
 	done
+	if [ "x@IMPLIB_NAME@" != "x" -a -f "@IMPLIB_NAME@" ]; then \
+	  $(INSTALL_LIBRARY) @IMPLIB_NAME@ $(DESTDIR)$(libdir); \
+	fi
 	if [ "x@SONAME3@" != "x" -a -f "@SONAME3@" ]; then \
 	  ( $(INSTALL_LIBRARY) @SONAME3@ $(DESTDIR)$(libdir) && \
 	    cd $(DESTDIR)$(libdir) && $(RM) -f @SONAME2@ @SONAME1@ @SONAME@ && \
diff -Naur a/src/aclocal.m4 b/src/aclocal.m4
--- a/src/aclocal.m4	2016-05-11 13:10:51.816673752 +1200
+++ b/src/aclocal.m4	2016-05-11 13:27:44.983968151 +1200
@@ -232,6 +232,8 @@
 AC_SUBST(LIBEXT)
 AC_SUBST(SHAREDEXT)dnl	Name components of a dynamically linked library
 AC_SUBST(SHAREDPREFIX)
+AC_SUBST(IMPLIB_EXT)dnl	Name components of a dynamically linked library import file
+AC_SUBST(IMPLIB_PREFIX)
 AC_SUBST(OBJEXT)dnl	These are set by autoconf
 AC_SUBST(EXEEXT)
 AC_SUBST(INSTALL_TARGET)dnl Which type of installation: flat directory or unix like.
@@ -241,6 +243,8 @@
 ECL_LDRPATH=''
 SHAREDEXT='so'
 SHAREDPREFIX='lib'
+IMPLIB_EXT=''
+IMPLIB_PREFIX=''
 LIBPREFIX='lib'
 LIBEXT='a'
 PICFLAG='-fPIC'
@@ -252,6 +256,8 @@
 clibs=''
 SONAME=''
 SONAME_LDFLAGS=''
+IMPLIB_NAME=''
+IMPLIB_LDFLAGS=''
 case "${host_os}" in
         linux-androideabi)
                 thehost='android'
@@ -369,10 +375,14 @@
                 shared='yes'
                 THREAD_CFLAGS='-D_THREAD_SAFE'
                 THREAD_LIBS='-lpthread'
-                SHARED_LDFLAGS="-shared ${LDFLAGS}"
-                BUNDLE_LDFLAGS="-shared ${LDFLAGS}"
-                SHAREDPREFIX=''
+                SHARED_LDFLAGS="-shared -Wl,--enable-auto-image-base ${LDFLAGS}"
+                BUNDLE_LDFLAGS="-shared -Wl,--enable-auto-image-base ${LDFLAGS}"
+                SHAREDPREFIX='cyg'
                 SHAREDEXT='dll'
+                IMPLIB_PREFIX='lib'
+                IMPLIB_EXT='dll.a'
+                IMPLIB_NAME="${IMPLIB_PREFIX}ecl.${IMPLIB_EXT}"
+                IMPLIB_LDFLAGS="-Wl,--out-implib,${IMPLIB_NAME}"
                 PICFLAG=''
                 if test "x$host_cpu" = "xx86_64" ; then
                    # Our GMP library is too old and does not support
@@ -387,11 +397,15 @@
                 enable_threads='yes'
                 THREAD_CFLAGS='-D_THREAD_SAFE'
                 THREAD_GC_FLAGS='--enable-threads=win32'
-                SHARED_LDFLAGS=''
-                BUNDLE_LDFLAGS=''
+                SHARED_LDFLAGS="-shared -Wl,--enable-auto-image-base ${LDFLAGS}"
+                BUNDLE_LDFLAGS="-shared -Wl,--enable-auto-image-base ${LDFLAGS}"
                 SHAREDPREFIX=''
                 SHAREDEXT='dll'
-                PICFLAG=''
+                IMPLIB_PREFIX='lib'
+                IMPLIB_EXT='dll.a'
+                IMPLIB_NAME="${IMPLIB_PREFIX}ecl.${IMPLIB_EXT}"
+                IMPLIB_LDFLAGS="-Wl,--out-implib,${IMPLIB_NAME}"
+                PICFLAG=''
                 INSTALL_TARGET='flatinstall'
                 TCPLIBS='-lws2_32'
                 ;;
diff -Naur a/src/compile.lsp.in b/src/compile.lsp.in
--- a/src/compile.lsp.in	2016-05-11 13:10:51.888673915 +1200
+++ b/src/compile.lsp.in	2016-05-11 13:30:13.270308872 +1200
@@ -61,7 +61,7 @@
 ;;;
 ;;; * Add include path to not yet installed headers, and remove include flag
 ;;;   (-I) to installed directory, and Notice that we must explicitely mention
-;;;   libecl.so/ecl.dll instead of using -lecl. This is to avoid interference
+;;;   libecl.so/cygecl.dll instead of using -lecl. This is to avoid interference
 ;;;   with an already installed copy of ECL.
 ;;;
 (setq c::*cc-flags*
@@ -143,7 +143,7 @@
 ;;;
 ;;; We do not need the -rpath flag for the library, nor -lecl.
 ;;;
-(let* ((c::*ld-shared-flags* #-msvc "@SHARED_LDFLAGS@ @LDFLAGS@ @SONAME_LDFLAGS@ @CORE_LIBS@ @FASL_LIBS@ @LIBS@"
+(let* ((c::*ld-shared-flags* #-msvc " @IMPLIB_LDFLAGS@ @SHARED_LDFLAGS@ @LDFLAGS@ @SONAME_LDFLAGS@ @CORE_LIBS@ @FASL_LIBS@ @LIBS@"
                              #+msvc "@SHARED_LDFLAGS@ @LDFLAGS@ @STATICLIBS@ @CLIBS@")
        (c::*cc-flags* (concatenate 'string "-DECL_API -I@true_builddir@/c " c::*cc-flags*))
        (extra-args nil))
diff -Naur a/src/configure.ac b/src/configure.ac
--- a/src/configure.ac	2016-05-11 13:10:51.889673917 +1200
+++ b/src/configure.ac	2016-05-11 13:19:07.721791089 +1200
@@ -600,6 +600,20 @@
 AC_SUBST(SONAME)
 AC_SUBST(SONAME_LDFLAGS)
 
+dnl ----------------------------------------------------------------------
+dnl IMPLIB_NAME is only active when IMPLIB_NAME is non nil
+dnl
+AC_MSG_CHECKING(for import name)
+if test "${enable_soname}" != yes; then
+   IMPLIB_NAME=''
+   AC_MSG_RESULT([none])
+else
+   AC_MSG_RESULT([${IMPLIB_NAME}])
+fi
+AC_SUBST(IMPLIB_NAME)
+AC_SUBST(IMPLIB_LDFLAGS)
+
+
 dnl Related to that, the package version number
 ECL_VERSION_NUMBER=$(($PACKAGE_MAJOR * 10000 + $PACKAGE_MINOR * 100 + $PACKAGE_LEAST))
 AC_SUBST(ECL_VERSION_NUMBER)
