diff --git a/Include/abstract.h b/Include/abstract.h
index b765c4b..7a6b7cf 100644
--- a/Include/abstract.h
+++ b/Include/abstract.h
@@ -383,8 +383,6 @@
 
      DL_IMPORT(int) PyObject_Size(PyObject *o);
 
-#define PyObject_Length PyObject_Size
-
        /*
          Return the size of object o.  If the object, o, provides
 	 both sequence and mapping protocols, the sequence size is
@@ -393,6 +391,12 @@
 
        */
 
+       /* For DLL compatibility */
+#undef PyObject_Length
+     DL_IMPORT(int) PyObject_Length(PyObject *o);
+#define PyObject_Length PyObject_Size
+
+
      DL_IMPORT(PyObject *) PyObject_GetItem(PyObject *o, PyObject *key);
 
        /*
@@ -685,13 +689,17 @@
 
      DL_IMPORT(int) PySequence_Size(PyObject *o);
 
-#define PySequence_Length PySequence_Size
-
        /*
          Return the size of sequence object o, or -1 on failure.
 
        */
 
+       /* For DLL compatibility */
+#undef PySequence_Length
+     DL_IMPORT(int) PySequence_Length(PyObject *o);
+#define PySequence_Length PySequence_Size
+
+
      DL_IMPORT(PyObject *) PySequence_Concat(PyObject *o1, PyObject *o2);
 
        /*
@@ -839,14 +847,18 @@
 
      DL_IMPORT(int) PyMapping_Size(PyObject *o);
 
-#define PyMapping_Length PyMapping_Size
-
        /*
          Returns the number of keys in object o on success, and -1 on
 	 failure.  For objects that do not provide sequence protocol,
 	 this is equivalent to the Python expression: len(o).
        */
 
+       /* For DLL compatibility */
+#undef PyMapping_Length
+     DL_IMPORT(int) PyMapping_Length(PyObject *o);
+#define PyMapping_Length PyMapping_Size
+
+
      /* implemented as a macro:
 
      int PyMapping_DelItemString(PyObject *o, char *key);
diff --git a/Objects/abstract.c b/Objects/abstract.c
index 2c7c307..1d99019 100644
--- a/Objects/abstract.c
+++ b/Objects/abstract.c
@@ -78,6 +78,14 @@
 	return PyMapping_Size(o);
 }
 
+#undef PyObject_Length
+int
+PyObject_Length(PyObject *o)
+{
+	return PyObject_Size(o);
+}
+#define PyObject_Length PyObject_Size
+
 PyObject *
 PyObject_GetItem(PyObject *o, PyObject *key)
 {
@@ -820,6 +828,14 @@
 	return -1;
 }
 
+#undef PySequence_Length
+int
+PySequence_Length(PyObject *s)
+{
+	return PySequence_Size(s);
+}
+#define PySequence_Length PySequence_Size
+
 PyObject *
 PySequence_Concat(PyObject *s, PyObject *o)
 {
@@ -1278,6 +1294,14 @@
 	return -1;
 }
 
+#undef PyMapping_Length
+int
+PyMapping_Length(PyObject *o)
+{
+	return PyMapping_Size(o);
+}
+#define PyMapping_Length PyMapping_Size
+
 PyObject *
 PyMapping_GetItemString(PyObject *o, char *key)
 {
