diff --git a/Include/accessobject.h b/Include/accessobject.h
index fd8c2e9..5619308 100644
--- a/Include/accessobject.h
+++ b/Include/accessobject.h
@@ -46,7 +46,7 @@
 #define AC_R_PUBLIC	0004
 #define AC_W_PUBLIC	0002
 
-extern typeobject Accesstype;
+extern DL_IMPORT typeobject Accesstype;
 
 #define is_accessobject(v) ((v)->ob_type == &Accesstype)
 
@@ -58,7 +58,7 @@
 object *cloneaccessobject PROTO((object *));
 int hasaccessvalue PROTO((object *));
 
-extern typeobject Anynumbertype, Anysequencetype, Anymappingtype;
+extern DL_IMPORT typeobject Anynumbertype, Anysequencetype, Anymappingtype;
 
 #ifdef __cplusplus
 }
diff --git a/Include/allobjects.h b/Include/allobjects.h
index 2b361c1..3d555d0 100644
--- a/Include/allobjects.h
+++ b/Include/allobjects.h
@@ -30,6 +30,19 @@
 
 /* "allobjects.c" -- Source for precompiled header "allobjects.h" */
 
+/* Some systems (well, NT anyway!) require special declarations for
+ data items imported from dynamic modules.  Note that this defn is
+ only turned on for the modules built as DL modules, not for python
+ itself.
+*/
+#define DL_IMPORT /* Save lots of #else/#if's */
+#ifdef USE_DL_IMPORT
+#ifdef NT
+#undef DL_IMPORT
+#define DL_IMPORT __declspec(dllimport)
+#endif /* NT */
+#endif /* USE_DL_IMPORT */
+
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif
diff --git a/Include/classobject.h b/Include/classobject.h
index 6b1b85b..f619345 100644
--- a/Include/classobject.h
+++ b/Include/classobject.h
@@ -57,7 +57,7 @@
 #endif
 } instanceobject;
 
-extern typeobject Classtype, Instancetype, Instancemethodtype;
+extern DL_IMPORT typeobject Classtype, Instancetype, Instancemethodtype;
 
 #define is_classobject(op) ((op)->ob_type == &Classtype)
 #define is_instanceobject(op) ((op)->ob_type == &Instancetype)
diff --git a/Include/compile.h b/Include/compile.h
index 4526523..6c782da 100644
--- a/Include/compile.h
+++ b/Include/compile.h
@@ -47,7 +47,7 @@
 	object *co_name;	/* string */
 } codeobject;
 
-extern typeobject Codetype;
+extern DL_IMPORT typeobject Codetype;
 
 #define is_codeobject(op) ((op)->ob_type == &Codetype)
 
diff --git a/Include/errors.h b/Include/errors.h
index 050ff19..33c7806 100755
--- a/Include/errors.h
+++ b/Include/errors.h
@@ -39,25 +39,25 @@
 
 /* Predefined exceptions */
 
-extern object *AccessError;
-extern object *AttributeError;
-extern object *ConflictError;
-extern object *EOFError;
-extern object *IOError;
-extern object *ImportError;
-extern object *IndexError;
-extern object *KeyError;
-extern object *KeyboardInterrupt;
-extern object *MemoryError;
-extern object *NameError;
-extern object *OverflowError;
-extern object *RuntimeError;
-extern object *SyntaxError;
-extern object *SystemError;
-extern object *SystemExit;
-extern object *TypeError;
-extern object *ValueError;
-extern object *ZeroDivisionError;
+extern DL_IMPORT object *AccessError;
+extern DL_IMPORT object *AttributeError;
+extern DL_IMPORT object *ConflictError;
+extern DL_IMPORT object *EOFError;
+extern DL_IMPORT object *IOError;
+extern DL_IMPORT object *ImportError;
+extern DL_IMPORT object *IndexError;
+extern DL_IMPORT object *KeyError;
+extern DL_IMPORT object *KeyboardInterrupt;
+extern DL_IMPORT object *MemoryError;
+extern DL_IMPORT object *NameError;
+extern DL_IMPORT object *OverflowError;
+extern DL_IMPORT object *RuntimeError;
+extern DL_IMPORT object *SyntaxError;
+extern DL_IMPORT object *SystemError;
+extern DL_IMPORT object *SystemExit;
+extern DL_IMPORT object *TypeError;
+extern DL_IMPORT object *ValueError;
+extern DL_IMPORT object *ZeroDivisionError;
 
 /* Convenience functions */
 
diff --git a/Include/fileobject.h b/Include/fileobject.h
index c52a6aa..7cdd63a 100644
--- a/Include/fileobject.h
+++ b/Include/fileobject.h
@@ -30,7 +30,7 @@
 
 /* File object interface */
 
-extern typeobject Filetype;
+extern DL_IMPORT typeobject Filetype;
 
 #define is_fileobject(op) ((op)->ob_type == &Filetype)
 
diff --git a/Include/floatobject.h b/Include/floatobject.h
index 1d0484f..f6999bd 100644
--- a/Include/floatobject.h
+++ b/Include/floatobject.h
@@ -39,7 +39,7 @@
 	double ob_fval;
 } floatobject;
 
-extern typeobject Floattype;
+extern DL_IMPORT typeobject Floattype;
 
 #define is_floatobject(op) ((op)->ob_type == &Floattype)
 
diff --git a/Include/frameobject.h b/Include/frameobject.h
index 2458881..d9b375a 100644
--- a/Include/frameobject.h
+++ b/Include/frameobject.h
@@ -58,7 +58,7 @@
 
 /* Standard object interface */
 
-extern typeobject Frametype;
+extern DL_IMPORT typeobject Frametype;
 
 #define is_frameobject(op) ((op)->ob_type == &Frametype)
 
diff --git a/Include/funcobject.h b/Include/funcobject.h
index 84b0dcf..cb36518 100644
--- a/Include/funcobject.h
+++ b/Include/funcobject.h
@@ -39,7 +39,7 @@
 	object *func_argdefs;
 } funcobject;
 
-extern typeobject Functype;
+extern DL_IMPORT typeobject Functype;
 
 #define is_funcobject(op) ((op)->ob_type == &Functype)
 
diff --git a/Include/intobject.h b/Include/intobject.h
index 2ede41e..28471b5 100644
--- a/Include/intobject.h
+++ b/Include/intobject.h
@@ -50,7 +50,7 @@
 	long ob_ival;
 } intobject;
 
-extern typeobject Inttype;
+extern DL_IMPORT typeobject Inttype;
 
 #define is_intobject(op) ((op)->ob_type == &Inttype)
 
@@ -69,7 +69,7 @@
 Don't forget to apply INCREF() when returning True or False!!!
 */
 
-extern intobject FalseObject, TrueObject; /* Don't use these directly */
+extern DL_IMPORT intobject FalseObject, TrueObject; /* Don't use these directly */
 
 #define False ((object *) &FalseObject)
 #define True ((object *) &TrueObject)
diff --git a/Include/listobject.h b/Include/listobject.h
index 610096b..212e3ce 100644
--- a/Include/listobject.h
+++ b/Include/listobject.h
@@ -49,7 +49,7 @@
 	object **ob_item;
 } listobject;
 
-extern typeobject Listtype;
+extern DL_IMPORT typeobject Listtype;
 
 #define is_listobject(op) ((op)->ob_type == &Listtype)
 
diff --git a/Include/longobject.h b/Include/longobject.h
index ce2cd0b..4c21e7a 100644
--- a/Include/longobject.h
+++ b/Include/longobject.h
@@ -32,7 +32,7 @@
 
 typedef struct _longobject longobject; /* Revealed in longintrepr.h */
 
-extern typeobject Longtype;
+extern DL_IMPORT typeobject Longtype;
 
 #define is_longobject(op) ((op)->ob_type == &Longtype)
 
diff --git a/Include/mappingobject.h b/Include/mappingobject.h
index 8844c77..caedbc7 100644
--- a/Include/mappingobject.h
+++ b/Include/mappingobject.h
@@ -30,7 +30,7 @@
 
 /* Mapping object type -- mapping from hashable object to object */
 
-extern typeobject Mappingtype;
+extern DL_IMPORT typeobject Mappingtype;
 
 #define is_mappingobject(op) ((op)->ob_type == &Mappingtype)
 
diff --git a/Include/methodobject.h b/Include/methodobject.h
index 1ef19aa..5799a18 100644
--- a/Include/methodobject.h
+++ b/Include/methodobject.h
@@ -30,7 +30,7 @@
 
 /* Method object interface */
 
-extern typeobject Methodtype;
+extern DL_IMPORT typeobject Methodtype;
 
 #define is_methodobject(op) ((op)->ob_type == &Methodtype)
 
diff --git a/Include/moduleobject.h b/Include/moduleobject.h
index 0605d31..3bd2642 100644
--- a/Include/moduleobject.h
+++ b/Include/moduleobject.h
@@ -30,7 +30,7 @@
 
 /* Module object interface */
 
-extern typeobject Moduletype;
+extern DL_IMPORT typeobject Moduletype;
 
 #define is_moduleobject(op) ((op)->ob_type == &Moduletype)
 
diff --git a/Include/object.h b/Include/object.h
index cf10ec5..e419567 100644
--- a/Include/object.h
+++ b/Include/object.h
@@ -227,7 +227,7 @@
 #endif
 } typeobject;
 
-extern typeobject Typetype; /* The type of type objects */
+extern DL_IMPORT typeobject Typetype; /* The type of type objects */
 
 #define is_typeobject(op) ((op)->ob_type == &Typetype)
 
@@ -341,7 +341,7 @@
 Don't forget to apply INCREF() when returning this value!!!
 */
 
-extern object NoObject; /* Don't use this directly */
+extern DL_IMPORT object NoObject; /* Don't use this directly */
 
 #define None (&NoObject)
 
diff --git a/Include/pyerrors.h b/Include/pyerrors.h
index 050ff19..33c7806 100644
--- a/Include/pyerrors.h
+++ b/Include/pyerrors.h
@@ -39,25 +39,25 @@
 
 /* Predefined exceptions */
 
-extern object *AccessError;
-extern object *AttributeError;
-extern object *ConflictError;
-extern object *EOFError;
-extern object *IOError;
-extern object *ImportError;
-extern object *IndexError;
-extern object *KeyError;
-extern object *KeyboardInterrupt;
-extern object *MemoryError;
-extern object *NameError;
-extern object *OverflowError;
-extern object *RuntimeError;
-extern object *SyntaxError;
-extern object *SystemError;
-extern object *SystemExit;
-extern object *TypeError;
-extern object *ValueError;
-extern object *ZeroDivisionError;
+extern DL_IMPORT object *AccessError;
+extern DL_IMPORT object *AttributeError;
+extern DL_IMPORT object *ConflictError;
+extern DL_IMPORT object *EOFError;
+extern DL_IMPORT object *IOError;
+extern DL_IMPORT object *ImportError;
+extern DL_IMPORT object *IndexError;
+extern DL_IMPORT object *KeyError;
+extern DL_IMPORT object *KeyboardInterrupt;
+extern DL_IMPORT object *MemoryError;
+extern DL_IMPORT object *NameError;
+extern DL_IMPORT object *OverflowError;
+extern DL_IMPORT object *RuntimeError;
+extern DL_IMPORT object *SyntaxError;
+extern DL_IMPORT object *SystemError;
+extern DL_IMPORT object *SystemExit;
+extern DL_IMPORT object *TypeError;
+extern DL_IMPORT object *ValueError;
+extern DL_IMPORT object *ZeroDivisionError;
 
 /* Convenience functions */
 
diff --git a/Include/rangeobject.h b/Include/rangeobject.h
index 9befd9b..50d660b 100644
--- a/Include/rangeobject.h
+++ b/Include/rangeobject.h
@@ -34,7 +34,7 @@
 they are represented by a start, stop, and step datamembers.
 */
 
-extern typeobject Rangetype;
+extern DL_IMPORT typeobject Rangetype;
 
 #define is_rangeobject(op) ((op)->ob_type == &Rangetype)
 
diff --git a/Include/stringobject.h b/Include/stringobject.h
index 6896a55..b6ec1c8 100644
--- a/Include/stringobject.h
+++ b/Include/stringobject.h
@@ -57,7 +57,7 @@
 	char ob_sval[1];
 } stringobject;
 
-extern typeobject Stringtype;
+extern DL_IMPORT typeobject Stringtype;
 
 #define is_stringobject(op) ((op)->ob_type == &Stringtype)
 
diff --git a/Include/sysmodule.h b/Include/sysmodule.h
index 93e3a51..e48e4a3 100644
--- a/Include/sysmodule.h
+++ b/Include/sysmodule.h
@@ -35,7 +35,7 @@
 FILE *sysgetfile PROTO((char *, FILE *));
 void initsys PROTO((void));
 
-extern object *sys_trace, *sys_profile;
+extern DL_IMPORT object *sys_trace, *sys_profile;
 
 #ifdef __cplusplus
 }
diff --git a/Include/tupleobject.h b/Include/tupleobject.h
index b422a40..f89c655 100644
--- a/Include/tupleobject.h
+++ b/Include/tupleobject.h
@@ -49,7 +49,7 @@
 	object *ob_item[1];
 } tupleobject;
 
-extern typeobject Tupletype;
+extern DL_IMPORT typeobject Tupletype;
 
 #define is_tupleobject(op) ((op)->ob_type == &Tupletype)
 
