gpt4 book ai didi

python - C DLL 在 C++ 程序中加载,而不是在 python Ctypes 中加载

转载 作者:太空宇宙 更新时间:2023-11-04 03:55:49 25 4
gpt4 key购买 nike

关于 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 上所以 depends 输出有点不稳定,但从研究来看似乎没有什么不合适的,任何人都知道一个更兼容 Win7 的类似依赖的工具?)

3.) 我有一个 .bat 文件,它设置了我所有的环境变量,并且还采取了其他措施(共同定位依赖项)以确保所有依赖项都得到解决。同样,除了典型的 Win7 操作系统故障外,depends 中的所有内容都显示正常。

有人知道调试此类问题的好方法吗?更好的版本取决于?一种准确查看无法从 python 加载的符号/模块的方法?

同样,CPP测试程序完美加载并执行了dll。真的不确定 Python 端发生了什么。感谢任何调试方面的帮助。

谢谢。

最佳答案

使用Sysinternals Process Monitor .将其配置为监视 python.exe 进程以进行 CreateFile 操作:

Process Monitor Filter dialog

然后运行您的脚本。在下面的示例中,我运行了:

>>> from ctypes import *
>>> CDLL('x')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "D:\dev\Python33x64\lib\ctypes\__init__.py", line 353, in __init__
self._handle = _dlopen(self._name, mode)
OSError: [WinError 126] The specified module could not be found

x.dll 不存在,跟踪底部附近有以下结果,但请注意,任何缺失的相关 DLL 都会以类似方式显示:

Process Monitor trace

关于python - C DLL 在 C++ 程序中加载,而不是在 python Ctypes 中加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18583061/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com