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

关于python / ctypes和dll加载的问题.

我使用VSExpress 2010创建了一个C Dll(extern C声明).我可以使用CPP测试程序加载并执行此dll.但是,当我尝试通过ctypes在python中加载dll时,我得到旧的“WindowsError:[Errno 126]无法找到指定的模块”错误消息.

到目前为止,我已经做了以下事情:

1.)三重检查python端DLL的路径,并尝试绝对路径,以完全确定正在找到DLL.

2.)在depends.exe中创建DLL并验证依赖树中似乎没有遗漏任何内容(在Win 7上,因此依赖输出有点不稳定,但是从研究中看似没有什么不合适的地方,任何人都知道取决于 – 喜欢Win7兼容的工具?)

3.)我有一个.bat文件,它设置我的所有环境变量并采取其他操作(共同定位依赖项)以确保解决所有依赖项.同样,除了典型的Win7操作系统故障外,所有依赖项都显示清晰.

有人知道调试这类问题的好方法吗?一个更好的版本取决于?一种方法来确切地看到哪些符号/模块无法从python加载?

同样,CPP测试程序可以完美地加载和执行dll.真的不确定Python方面发生了什么.任何有关调试的帮助表示赞赏.

谢谢.

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

然后运行你的脚本.在下面的例子中,我运行:

>>> 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都会以类似方式显示:

https://stackoverflow.com/questions/18583061/c-dll-loads-in-c-program-not-in-python-ctypes

转载注明原文:C DLL在C程序中加载,而不是在python Ctypes中加载