diff --git a/lib/eprintf.c b/lib/eprintf.c
index b07d624..3626dbf 100644
--- a/lib/eprintf.c
+++ b/lib/eprintf.c
@@ -22,7 +22,9 @@
  * It should never be exported from a dylib, so it is marked
  * visibility hidden.
  */
+#ifndef _WIN32
 __attribute__((visibility("hidden")))
+#endif
 void __eprintf(const char* format, const char* assertion_expression,
 				const char* line, const char* file)
 {
diff --git a/lib/int_util.c b/lib/int_util.c
index 871d191..6d8922a 100644
--- a/lib/int_util.c
+++ b/lib/int_util.c
@@ -24,7 +24,9 @@
 #ifdef KERNEL_USE
 
 extern void panic(const char *, ...) __attribute__((noreturn));
+#ifndef _WIN32
 __attribute__((visibility("hidden")))
+#endif
 void compilerrt_abort_impl(const char *file, int line, const char *function) {
   panic("%s:%d: abort in %s", file, line, function);
 }
@@ -35,8 +37,10 @@ void compilerrt_abort_impl(const char *file, int line, const char *function) {
 extern void __assert_rtn(const char *func, const char *file, 
                      int line, const char * message) __attribute__((noreturn));
 
+#ifndef _WIN32
 __attribute__((weak))
 __attribute__((visibility("hidden")))
+#endif
 void compilerrt_abort_impl(const char *file, int line, const char *function) {
   __assert_rtn(function, file, line, "libcompiler_rt abort");
 }
@@ -47,8 +51,10 @@ void compilerrt_abort_impl(const char *file, int line, const char *function) {
 /* Get the system definition of abort() */
 #include <stdlib.h>
 
+#ifndef _WIN32
 __attribute__((weak))
 __attribute__((visibility("hidden")))
+#endif
 void compilerrt_abort_impl(const char *file, int line, const char *function) {
   abort();
 }
