diff --git a/src/c_wrapper/buffer.cpp b/src/c_wrapper/buffer.cpp
index 22d7ec1c66953cbced8c4309535a22e047f6f658..70e1ff3ed1074f5ecdb9f046f70e15672e2fd9b6 100644
--- a/src/c_wrapper/buffer.cpp
+++ b/src/c_wrapper/buffer.cpp
@@ -1,3 +1,4 @@
+#include <algorithm>
 #include "buffer.h"
 #include "context.h"
 #include "command_queue.h"
diff --git a/src/c_wrapper/function.h b/src/c_wrapper/function.h
index 89869918cc24ca97a285057bd5a0f93d9d46f271..40525a1313ecbfcf961f817773694cf727597202 100644
--- a/src/c_wrapper/function.h
+++ b/src/c_wrapper/function.h
@@ -50,7 +50,7 @@ call_tuple(Function &&func, T &&args)
 }
 
 template<template<typename...> class Convert, typename... Types>
-using _ArgPackBase = std::tuple<Convert<rm_ref_t<Types> >...>;
+using _ArgPackBase = std::tuple<Convert<typename std::remove_reference<Types>::type>...>;
 
 template<template<typename...> class Convert, typename... Types>
 class ArgPack : public _ArgPackBase<Convert, Types...> {
diff --git a/src/c_wrapper/gl_obj.cpp b/src/c_wrapper/gl_obj.cpp
index 27525ce96d48803d48624c2fb661effeda130195..ad5cf5baea706f8d95712b158904a5c7fafd0a2d 100644
--- a/src/c_wrapper/gl_obj.cpp
+++ b/src/c_wrapper/gl_obj.cpp
@@ -60,9 +60,9 @@ enqueue_gl_objects(clEnqueueGLObjectFunc func, const char *name,
         mem_objects, num_mem_objects);
     call_guarded(func, name, cq, _mem_objs, _wait_for, event_out(evt));
 }
-#define enqueue_gl_objects(what, args...)                       \
+#define enqueue_gl_objects(what, ...)                       \
     enqueue_gl_objects(clEnqueue##what##GLObjects,              \
-                       "clEnqueue" #what "GLObjects", args)
+                       "clEnqueue" #what "GLObjects", __VA_ARGS__)
 
 // c wrapper
 
diff --git a/src/c_wrapper/wrap_cl.h b/src/c_wrapper/wrap_cl.h
index c1feb22a047d1afe3abe5e9635abb88423f4314a..cb8b42199f0edd4f3fe27faacb36c25b9af4d5f3 100644
--- a/src/c_wrapper/wrap_cl.h
+++ b/src/c_wrapper/wrap_cl.h
@@ -34,6 +34,7 @@
 #define NOMINMAX
 #include <windows.h>
 #define strdup _strdup
+#define strcasecmp _stricmp
 #else
 #include <unistd.h>
 #define PYOPENCL_HAVE_EVENT_SET_CALLBACK