diff --git a/Include/cpython/marshal.h b/Include/cpython/marshal.h
new file mode 100644
index 00000000000000..6c1f7f96b6a2e8
--- /dev/null
+++ b/Include/cpython/marshal.h
@@ -0,0 +1,17 @@
+#ifndef _Py_CPYTHON_MARSHAL_H
+# error "this header file must not be included directly"
+#endif
+
+PyAPI_FUNC(PyObject *) PyMarshal_ReadObjectFromString(const char *,
+ Py_ssize_t);
+PyAPI_FUNC(PyObject *) PyMarshal_WriteObjectToString(PyObject *, int);
+
+#define Py_MARSHAL_VERSION 5
+
+PyAPI_FUNC(long) PyMarshal_ReadLongFromFile(FILE *);
+PyAPI_FUNC(int) PyMarshal_ReadShortFromFile(FILE *);
+PyAPI_FUNC(PyObject *) PyMarshal_ReadObjectFromFile(FILE *);
+PyAPI_FUNC(PyObject *) PyMarshal_ReadLastObjectFromFile(FILE *);
+
+PyAPI_FUNC(void) PyMarshal_WriteLongToFile(long, FILE *, int);
+PyAPI_FUNC(void) PyMarshal_WriteObjectToFile(PyObject *, FILE *, int);
diff --git a/Include/marshal.h b/Include/marshal.h
index f773587bdd0429..2ccb112b40c752 100644
--- a/Include/marshal.h
+++ b/Include/marshal.h
@@ -1,31 +1,18 @@
-
/* Interface for marshal.c */
#ifndef Py_MARSHAL_H
#define Py_MARSHAL_H
-#ifndef Py_LIMITED_API
-
#ifdef __cplusplus
extern "C" {
#endif
-PyAPI_FUNC(PyObject *) PyMarshal_ReadObjectFromString(const char *,
- Py_ssize_t);
-PyAPI_FUNC(PyObject *) PyMarshal_WriteObjectToString(PyObject *, int);
-
-#define Py_MARSHAL_VERSION 5
-
-PyAPI_FUNC(long) PyMarshal_ReadLongFromFile(FILE *);
-PyAPI_FUNC(int) PyMarshal_ReadShortFromFile(FILE *);
-PyAPI_FUNC(PyObject *) PyMarshal_ReadObjectFromFile(FILE *);
-PyAPI_FUNC(PyObject *) PyMarshal_ReadLastObjectFromFile(FILE *);
-
-PyAPI_FUNC(void) PyMarshal_WriteLongToFile(long, FILE *, int);
-PyAPI_FUNC(void) PyMarshal_WriteObjectToFile(PyObject *, FILE *, int);
+#ifndef Py_LIMITED_API
+# define _Py_CPYTHON_MARSHAL_H
+# include "cpython/marshal.h"
+# undef _Py_CPYTHON_MARSHAL_H
+#endif
#ifdef __cplusplus
}
#endif
-
-#endif /* Py_LIMITED_API */
#endif /* !Py_MARSHAL_H */
diff --git a/Makefile.pre.in b/Makefile.pre.in
index 244e25c348f5a4..ff9a84e4c274c4 100644
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -1271,6 +1271,7 @@ PYTHON_HEADERS= \
$(srcdir)/Include/cpython/pylock.h \
$(srcdir)/Include/cpython/longintrepr.h \
$(srcdir)/Include/cpython/longobject.h \
+ $(srcdir)/Include/cpython/marshal.h \
$(srcdir)/Include/cpython/memoryobject.h \
$(srcdir)/Include/cpython/methodobject.h \
$(srcdir)/Include/cpython/modsupport.h \
diff --git a/PCbuild/pythoncore.vcxproj b/PCbuild/pythoncore.vcxproj
index d7544d3a9fb122..d043d23eed85c7 100644
--- a/PCbuild/pythoncore.vcxproj
+++ b/PCbuild/pythoncore.vcxproj
@@ -168,6 +168,7 @@
+