Index: src/odbc_wrap.cpp
===================================================================
--- src/odbc_wrap.cpp	(revision 5036)
+++ src/odbc_wrap.cpp	(working copy)
@@ -2344,12 +2344,12 @@
 	return true;
 
       char state[32]={0};
-      SQLINTEGER errno=0;
+      SQLINTEGER __errno=0;
       char errmsg[256]={0};
       SQLSMALLINT tmp=0;
-      SQLGetDiagRec(htype,h,1,(SQLCHAR*)&state,&errno,(SQLCHAR*)errmsg,
+      SQLGetDiagRec(htype,h,1,(SQLCHAR*)&state,&__errno,(SQLCHAR*)errmsg,
 		    sizeof(errmsg),&tmp);
-      error("odbc error %i: %s",errno,errmsg);
+      error("odbc error %i: %s",__errno,errmsg);
       return false;
     }
   public:
Index: src/Makeconf.in
===================================================================
--- src/Makeconf.in	(revision 5036)
+++ src/Makeconf.in	(working copy)
@@ -66,6 +66,7 @@
 @DEFHAVE_MYSQL@
 @DEFHAVE_SQLITE3@
 @DEFHAVE_ODBC@
+ODBCLIB = @ODBCLIB@
 
 %.o: %.c ; $(MKOCTFILE) -c $<
 %.o: %.f ; $(MKOCTFILE) -c $<
Index: src/configure.base
===================================================================
--- src/configure.base	(revision 5036)
+++ src/configure.base	(working copy)
@@ -385,7 +385,23 @@
 
 # check for odbc
 AC_DEFINE(have_odbc)
-AC_CHECK_HEADER(sql.h, have_odbc=yes, have_odbc=no)
+AC_SUBST(ODBCLIB)
+ODBCLIB="-lodbc"
+case "$canonical_host_type" in
+  *-*-mingw* | *-*-msdosmsvc*)
+    AC_MSG_CHECKING([for sql.h])
+    AC_LANG_PUSH(C)
+    AC_TRY_COMPILE([
+#include <windows.h>
+#include <sql.h>], [], have_odbc=yes, have_odbc=no)
+    AC_LANG_POP(C)
+    AC_MSG_RESULT($have_odbc)
+    ODBCLIB="-lodbc32"
+    ;;
+  *)
+    AC_CHECK_HEADER(sql.h, have_odbc=yes, have_odbc=no)
+    ;;
+esac
 if test $have_odbc = yes ; then
     ODBC_STATUS="yes"
     AC_SUBST(DEFHAVE_ODBC)
Index: src/Makefile
===================================================================
--- src/Makefile	(revision 5036)
+++ src/Makefile	(working copy)
@@ -2,7 +2,8 @@
 
 # disable optimizations since gcc consumes too much memory
 # this line can be removed
-MKOCTFILE:=CXXFLAGS=-O0 $(MKOCTFILE)
+CXXFLAGS_NO_OPT := $(filter-out -O2, $(CXXFLAGS))
+MKOCTFILE:=CXXFLAGS="$(CXXFLAGS_NO_OPT)" $(MKOCTFILE)
 
 .PHONY: clean check
 
@@ -32,7 +33,7 @@
 	$(MKOCTFILE) -o mysql.oct -lmysqlclient mysql_wrap.cpp
 
 odbc.oct: odbc_wrap.cpp sql_filtered.h sqltypes_filtered.h sqlext_filtered.h
-	$(MKOCTFILE) -o odbc.oct -lodbc odbc_wrap.cpp
+	$(MKOCTFILE) -o odbc.oct $(ODBCLIB) odbc_wrap.cpp
 
 ifdef SWIG
 sqlite3_wrap.cpp: sqlite3.i
