- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
关于 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
操作:
然后运行您的脚本。在下面的示例中,我运行了:
>>> 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 都会以类似方式显示:
关于python - C DLL 在 C++ 程序中加载,而不是在 python Ctypes 中加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18583061/
我是一名优秀的程序员,十分优秀!