diff --git a/examples/Makefile b/examples/Makefile
index 863b80128085f271125ccba4e97df03da434bbb0..94597f3935eaed352a27c14e69db06e26ce27cca 100644
--- a/examples/Makefile
+++ b/examples/Makefile
@@ -8,3 +8,17 @@ all:
 	  $(CC) $(CFLAGS) post.c ../mongoose.c  $$LIBS $(ADD) -o post;
 	  $(CC) $(CFLAGS) -DUSE_WEBSOCKET websocket.c ../mongoose.c  $$LIBS $(ADD) -o websocket;
 	  $(CC) $(CFLAGS) chat.c ../mongoose.c  $$LIBS $(ADD) -o chat
+
+
+MSVC    = e:/vc6
+CL      = $(MSVC)/bin/cl
+CLFLAGS = /MD /TC /nologo $(DBG) /W3 /DNO_SSL \
+        /I$(MSVC)/include /I.. /Dsnprintf=_snprintf \
+        /link /incremental:no /libpath:$(MSVC)/lib /machine:IX86
+
+windows:
+	$(CL) hello.c ../mongoose.c $(CLFLAGS)
+	$(CL) upload.c ../mongoose.c $(CLFLAGS)
+	$(CL) post.c ../mongoose.c $(CLFLAGS)
+	$(CL) post.c ../mongoose.c $(CLFLAGS)
+	$(CL) /DUSE_WEBSOCKET websocket.c ../mongoose.c $(CLFLAGS)
\ No newline at end of file
diff --git a/examples/upload.c b/examples/upload.c
index dea8cdd416dbfc9e58d818d8039da6c6e907743a..0111d8d392ed423e8f55a65bde25d132b037a83d 100644
--- a/examples/upload.c
+++ b/examples/upload.c
@@ -5,8 +5,18 @@
 #include <string.h>
 #include <fcntl.h>
 #include <stdlib.h>
+#ifdef _WIN32
+#include <windows.h>
+#include <io.h>
+#define strtoll strtol
+typedef __int64 int64_t;
+#define O_CLOEXEC 0
+#define O_EXLOCK 0
+#else 
 #include <inttypes.h>
 #include <unistd.h>
+#endif // !_WIN32
+
 #include "mongoose.h"
 
 // Make sure that form has enctype="multipart/form-data" attribute
@@ -25,7 +35,7 @@ static void handle_file_upload(struct mg_connection *conn) {
   char post_data[16 * 1024], path[999], file_name[1024], mime_type[100],
        buf[BUFSIZ], *eop, *s, *p;
   FILE *fp;
-  long long int cl, written;
+  int64_t cl, written;
   int fd, n, post_data_len;
 
   // Figure out total content length. Return if it is not present or invalid.
@@ -87,7 +97,7 @@ static void handle_file_upload(struct mg_connection *conn) {
     (void) fwrite(p, 1, n, fp);
     written = n;
     while (written < cl &&
-           (n = mg_read(conn, buf, cl - written > (long long) sizeof(buf) ?
+           (n = mg_read(conn, buf, cl - written > (int64_t) sizeof(buf) ?
                         sizeof(buf) : cl - written)) > 0) {
       (void) fwrite(buf, 1, n, fp);
       written += n;