summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiss Skeleton (bot) <31488909+miss-islington@users.noreply.github.com>2020-10-22 15:48:51 (GMT)
committerGitHub <noreply@github.com>2020-10-22 15:48:51 (GMT)
commit5d8bc65ba5be5742b3a4cc470dfd990512bdaa93 (patch)
tree665abd542f5ada64c43e586a26a53d8f795f4a33
parent6a5c70ac1f963732db57e9c83d861b522123484c (diff)
downloadcpython-5d8bc65ba5be5742b3a4cc470dfd990512bdaa93.zip
cpython-5d8bc65ba5be5742b3a4cc470dfd990512bdaa93.tar.gz
cpython-5d8bc65ba5be5742b3a4cc470dfd990512bdaa93.tar.bz2
bpo-25655: Improve Win DLL loading failures doc (GH-22372)
Add documentation to help diagnose CDLL dependent DLL loading errors on windows for OSError with message: "[WinError 126] The specified module could not be found" This error is otherwise difficult to diagnose. (cherry picked from commit b6f2fc90409e291822166d74ce7402e0ef4dba91) Co-authored-by: Philippe Ombredanne <pombredanne@gmail.com>
-rw-r--r--Doc/library/ctypes.rst15
1 files changed, 15 insertions, 0 deletions
diff --git a/Doc/library/ctypes.rst b/Doc/library/ctypes.rst
index c172d53..bf32d3e 100644
--- a/Doc/library/ctypes.rst
+++ b/Doc/library/ctypes.rst
@@ -1326,6 +1326,21 @@ way is to instantiate one of the following classes:
libraries use the standard C calling convention, and are assumed to return
:c:type:`int`.
+ On Windows creating a :class:`CDLL` instance may fail even if the DLL name
+ exists. When a dependent DLL of the loaded DLL is not found, a
+ :exc:`OSError` error is raised with the message *"[WinError 126] The
+ specified module could not be found".* This error message does not contain
+ the name of the missing DLL because the Windows API does not return this
+ information making this error hard to diagnose. To resolve this error and
+ determine which DLL is not found, you need to find the list of dependent
+ DLLs and determine which one is not found using Windows debugging and
+ tracing tools.
+
+.. seealso::
+
+ `Microsoft DUMPBIN tool <https://docs.microsoft.com/cpp/build/reference/dependents>`_
+ -- A tool to find DLL dependents.
+
.. class:: OleDLL(name, mode=DEFAULT_MODE, handle=None, use_errno=False, use_last_error=False, winmode=0)