diff -Naur Python-3.8.0-orig/Modules/_ctypes/_ctypes.c Python-3.8.0/Modules/_ctypes/_ctypes.c
--- Python-3.8.0-orig/Modules/_ctypes/_ctypes.c	2019-10-14 16:34:47.000000000 +0300
+++ Python-3.8.0/Modules/_ctypes/_ctypes.c	2019-10-22 10:02:10.434865800 +0300
@@ -3342,11 +3342,30 @@
     mangled_name = alloca(strlen(name) + 1 + 1 + 1 + 3); /* \0 _ @ %d */
     if (!mangled_name)
         return NULL;
+    /* Issue: for stdcall decorated export functions MSVC compiler adds
+     * underscore, but GCC compiler create them without. This is
+     * visible by example for _ctypes_test.pyd module.
+     * As well functions from system libraries are without underscore.
+     * Solutions:
+     * - If a python module is build with gcc option --add-stdcall-alias
+     * the module will contain XXX as alias for function XXX@ as result
+     * first search in this method will succeed.
+     * - Distutil may use compiler to create def-file, to modify it as
+     * add underscore alias and with new def file to create module.
+     * - Or may be just to search for function without underscore.
+     */
     for (i = 0; i < 32; ++i) {
         sprintf(mangled_name, "_%s@%d", name, i*4);
         Py_BEGIN_ALLOW_THREADS
         address = (PPROC)GetProcAddress(handle, mangled_name);
         Py_END_ALLOW_THREADS
+        if (address)
+            return address;
+        /* search for function without underscore as weel */
+        sprintf(mangled_name, "%s@%d", name, i*4);
+        Py_BEGIN_ALLOW_THREADS
+        address = (PPROC)GetProcAddress(handle, mangled_name);
+        Py_END_ALLOW_THREADS
         if (address)
             return address;
     }
