diff --git a/src/fdlib.c b/src/fdlib.c
index 4db672e98c1b880118bcaa199a1fbb5f47c27831..13d4d4b8a71a98479c4ee59dc1b04fe9b18818cc 100644
--- a/src/fdlib.c
+++ b/src/fdlib.c
@@ -264,8 +264,7 @@ PMOD_EXPORT void set_errno_from_win32_error (unsigned long err)
 
 #undef NTLIBFUNC
 #define NTLIBFUNC(LIB, RET, NAME, ARGLIST)				\
-  typedef RET (WINAPI * PIKE_CONCAT3(Pike_NT_, NAME, _type)) ARGLIST;	\
-  static PIKE_CONCAT3(Pike_NT_, NAME, _type) PIKE_CONCAT(Pike_NT_, NAME)
+  PIKE_CONCAT3(Pike_NT_, NAME, _type) PIKE_CONCAT(Pike_NT_, NAME)
 
 #include "ntlibfuncs.h"
 
diff --git a/src/fdlib.h b/src/fdlib.h
index 04ce2a5ac898b99ae2709c28990f8771c23589af..7d5c301e4e21866ac8b4da0c2f93befe01d73718 100644
--- a/src/fdlib.h
+++ b/src/fdlib.h
@@ -327,6 +327,17 @@ extern int fd_type[FD_SETSIZE];
 #define S_IFIFO 0010000
 #endif
 
+/* Make dynamically loaded functions available to the rest of pike. */
+#undef NTLIB
+#define NTLIB(LIB)
+
+#undef NTLIBFUNC
+#define NTLIBFUNC(LIB, RET, NAME, ARGLIST)				\
+  typedef RET (WINAPI * PIKE_CONCAT3(Pike_NT_, NAME, _type)) ARGLIST;	\
+  extern PIKE_CONCAT3(Pike_NT_, NAME, _type) PIKE_CONCAT(Pike_NT_, NAME)
+
+#include "ntlibfuncs.h"
+
 
 /* This may be inaccurate! /Hubbe */
 #if defined(__NT__) && !defined(__MINGW32__)