这个问题是我今天在CTypes error loading DLL that calls another DLL 上发布的问题的部分解决方案。我将其作为单独的帖子发布,因为问题在于与 Python C/API 的依赖关系,而不是我发布的源代码中。
我有一个 64 位 NASM dll,它在 Windows 7 上调用 64 位 C dll。C dll 使用 Python C/API;NASM dll 使用 CTypes 调用。但是,当我在 Visual Studio 中使用 ctypes 加载 NASM dll 时,我收到错误“[WinError 126] 找不到指定的模块”。C dll 是在 MSYS2 中使用 GCC 编译的。
将 NASM dll 调用到 Dependency Walker 中显示缺少 libpython3.6m.dll 和 libwinpthread-1.dll。这些 dll 在 MSYS2 的发行版中,所以我将它们从那里复制到包含 NASM dll 的文件夹中。这解决了这个问题,但现在 Dependency Walker 说它缺少所有这些 DLL:
API-MS-WIN-CORE-COM-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-ERROR-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-L1-1- 0.DLL
API-MS-WIN-CORE-WINRT-ROBUFFER-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-STRING-L1-1-0.DLL
API-MS-WIN-SHCORE-SCALING -L1-1-0.DLL
DCOMP.DLL
IESHIMS.DLL
这个问题似乎与 Python C/API 有关,它显然依赖于这些 DLL。有谁知道如何解决这一问题?完整的源代码在上面的链接中。