我正在尝试使用 Python 加载 *.pyd,但收到众所周知的“导入错误:DLL 加载失败:找不到指定的过程”。错误。
我已经完成了以下操作:
1.) 使用 Dependency Walker 研究 *.pyd。GPSVC.DLL 和 IESHIMS.DLL 出现丢失,但延迟加载,IEFRAME.DLL 也出现丢失导出,但也是延迟加载。据我了解,这些没有被使用,并且无论如何都是延迟加载,所以它们不应该是问题。
2.) 在 python 命令窗口中对 foo.pyd 执行“import foo”,并用 ProcMon 进行监视。ProcMon 在“foo.pyd”上显示事件“LoadImage”,结果成功。
这似乎意味着 *.pyd 文件已正确加载。
那么我错过了什么。我的 Windows 诊断告诉我一切都很好,但 python 告诉我无法加载该东西(通常是由于缺少 dll 或符号)。
有想法吗?
谢谢!
关于 python/ctypes 和 dll 加载的问题。
我使用 VSExpress 2010 创建了一个 C Dll(外部 C 声明)。我可以使用 CPP 测试程序加载并执行该 dll。但是,当我尝试通过 ctypes 在 python 中加载 dll 时,我收到旧的“WindowsError: [Errno 126] 找不到指定的模块”错误消息。
到目前为止我已经做了以下事情:
1.) 在 python 端三次检查 DLL 的路径,并尝试绝对路径以完全确保找到 DLL。
2.)在depends.exe中调出DLL,并验证依赖树中似乎没有丢失任何内容(在Win 7上,所以依赖输出有点不稳定,但从研究来看,似乎没有什么不合适的地方,任何人都知道依赖-比如更兼容Win7的工具?)
3.) 我有一个 .bat 文件,它设置了所有环境变量,并采取了其他操作(共同定位依赖项)以确保所有依赖项都得到解决。同样,除了典型的 Win7 操作系统故障之外,depends 中的所有内容都显示干净。
有人知道调试此类问题的好方法吗?更好的依赖版本?有一种方法可以准确地查看哪些符号/模块无法从 python 加载?
同样,CPP 测试程序完美地加载并执行了 dll。真的不知道Python 端发生了什么。任何调试方面的帮助都值得赞赏。
谢谢。