diff --git a/Doc/extending/windows.rst b/Doc/extending/windows.rst index 8d1986ff493..67336660617 100644 --- a/Doc/extending/windows.rst +++ b/Doc/extending/windows.rst @@ -171,7 +171,9 @@ If your module creates a new type, you may have trouble with this line:: PyVarObject_HEAD_INIT(&PyType_Type, 0) -Change it to:: +Static type object initializers in extension modules may cause +compiles to fail with an error message like "initializer not a +constant". This shows up when building DLL under MSVC. Change it to:: PyVarObject_HEAD_INIT(NULL, 0) @@ -179,8 +181,6 @@ and add the following to the module initialization function:: MyObject_Type.ob_type = &PyType_Type; -Refer to section 3 of the `Python FAQ `_ for -details on why you must do this. .. _dynamic-linking: diff --git a/Include/pyport.h b/Include/pyport.h index 799e6cfb4d2..5e98f0b8156 100644 --- a/Include/pyport.h +++ b/Include/pyport.h @@ -695,23 +695,24 @@ extern pid_t forkpty(int *, char *, struct termios *, struct winsize *); # ifdef Py_BUILD_CORE # define PyAPI_FUNC(RTYPE) __declspec(dllexport) RTYPE # define PyAPI_DATA(RTYPE) extern __declspec(dllexport) RTYPE - /* module init functions inside the core need no external linkage */ - /* except for Cygwin to handle embedding */ + /* module init functions inside the core need no external linkage */ + /* except for Cygwin to handle embedding */ # if defined(__CYGWIN__) # define PyMODINIT_FUNC __declspec(dllexport) PyObject* # else /* __CYGWIN__ */ # define PyMODINIT_FUNC PyObject* # endif /* __CYGWIN__ */ # else /* Py_BUILD_CORE */ - /* Building an extension module, or an embedded situation */ - /* public Python functions and data are imported */ - /* Under Cygwin, auto-import functions to prevent compilation */ - /* failures similar to http://python.org/doc/FAQ.html#3.24 */ + /* Building an extension module, or an embedded situation */ + /* public Python functions and data are imported */ + /* Under Cygwin, auto-import functions to prevent compilation */ + /* failures similar to those described at the bottom of 4.1: */ + /* http://docs.python.org/extending/windows.html#a-cookbook-approach */ # if !defined(__CYGWIN__) # define PyAPI_FUNC(RTYPE) __declspec(dllimport) RTYPE # endif /* !__CYGWIN__ */ # define PyAPI_DATA(RTYPE) extern __declspec(dllimport) RTYPE - /* module init functions outside the core must be exported */ + /* module init functions outside the core must be exported */ # if defined(__cplusplus) # define PyMODINIT_FUNC extern "C" __declspec(dllexport) PyObject* # else /* __cplusplus */