diff --git a/src/xpdev/strwrap.c b/src/xpdev/strwrap.c
index 0af148051139b98307ec335d022ea9d6902f6d94..11a7280118222b098a1b8322bf3bd127beb48813 100644
--- a/src/xpdev/strwrap.c
+++ b/src/xpdev/strwrap.c
@@ -1,4 +1,6 @@
 #include <stdio.h>
+#include <malloc.h>
+#include <string.h>
 
 #if !defined _MSC_VER && !defined __BORLANDC__
 char* itoa(int val, char* str, int radix)
@@ -40,7 +42,7 @@ char* ltoa(long val, char* str, int radix)
 }
 #endif
 
-#ifdef _WIN32
+#if defined(_WIN32) && !defined(_MSC_VER)
 /* From FreeBSD */
 size_t
 strnlen(const char *s, size_t maxlen)
@@ -53,7 +55,9 @@ strnlen(const char *s, size_t maxlen)
 	}
 	return (len);
 }
+#endif
 
+#ifdef _WIN32
 /* From FreeBSD */
 char *
 strndup(const char *str, size_t maxlen)
diff --git a/src/xpdev/xpdev_mt.vcxproj b/src/xpdev/xpdev_mt.vcxproj
index bf2b0141b58cd5b662f3681018651db00764d91d..e8588591ff76b08d39881b5b2668de97d126daf6 100644
--- a/src/xpdev/xpdev_mt.vcxproj
+++ b/src/xpdev/xpdev_mt.vcxproj
@@ -182,6 +182,7 @@
       <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ClCompile>
+    <ClCompile Include="strwrap.c" />
     <ClCompile Include="str_list.c">
       <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>