Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中加载dll时出现Windows错误1114_Python_Windows_Dll_Dllimport - Fatal编程技术网

在Python中加载dll时出现Windows错误1114

在Python中加载dll时出现Windows错误1114,python,windows,dll,dllimport,Python,Windows,Dll,Dllimport,我目前正在尝试将一些代码从32位windows XP计算机移植到64位windows 10计算机。我需要在我的python代码中导入家庭开发的C DLL,如下所示: from ctypes import * [...] self.inter_test_dll = windll.LoadLibrary("my.dll") self.w = QtWidgets.QWidget() self.wid = self.w.winId() self.wid.

我目前正在尝试将一些代码从32位windows XP计算机移植到64位windows 10计算机。我需要在我的python代码中导入家庭开发的C DLL,如下所示:

    from ctypes import *
    [...]
    self.inter_test_dll = windll.LoadLibrary("my.dll")

    self.w = QtWidgets.QWidget()
    self.wid = self.w.winId()
    self.wid.setsize(64)
    print(self.wid)
    self.inter_test_dll.dll_load_window(int(self.wid), 'test')
    self.inter_test_dll.dll_connect(2, self.callback)
    [...]
当dll加载了一个神秘的

    Windows Error 1114
这意味着dll在初始化时崩溃。我已经在我的个人计算机(64位Windows7)上尝试了我的dll,没有问题,一切正常。 我曾在同一台64位Windows 10计算机上的C程序中尝试过该dll,LoadLibrary(“my.dll”)也会失败,但LoadLibraryEx(“my.dll”,NULL,don_RESOLVE\u dll\u REFERENCE)确实有效

当我在我的dll上运行依赖项遍历程序时,它似乎遗漏了一些2到4个深度级别的dll,但奇怪的是,当从C程序中正确调用时,它似乎并不影响它的工作

所以我的问题是,有没有一种方法可以在Python中实例化我的dll,而不必深入检查它的依赖关系?如果没有,是否有办法修改我的windows行为,以便在默认情况下跳过该检查


非常感谢

谢谢你的评论,我已经解决了我的问题

WxWidgets已在2天前更新。我已经用这个新版本重新编译了我的dll,错误消失了


很抱歉,我找不到解决此问题的更通用方法。

在将dll加载到python中后,您希望如何处理它?因为这两种方式似乎都不可用,除非您解决依赖关系。请使用gflags为python.exe启用加载程序快照,并在附加调试程序的情况下运行
ctypes.windle(“my.dll”)
。这将告诉您哪个DLL的init例程失败。@Train:我用它做什么并不重要(或者至少在我看来是这样),因为当加载到C程序中时,它工作得很好。。。丢失的DLL不是1级依赖项,在我看来,它们丢失的事实似乎并不影响1级DLL的行为,但在我的特殊情况下并不影响它们的行为。@eryksun:问题是我知道哪些是失败的(我用依赖项查询器检查依赖项)。他们很多!另外,它们都在c:/system32/downleep中,我真的不知道该怎么彻底弄乱我的windows,因为我不确定自己是否足够胜任……Dependency walker已经过时,将显示大量API集的“缺失”DLL。不要用它。您没有丢失的DLL。您已经到了加载图中所有DLL的地步,并且在导入表中更新了所有必需的符号名。现在,加载程序正在调用
DLL\u PROCESS\u ATTACH
的DLL入口点,其中一个入口点失败。不幸的是,加载程序不再在消息框中指出哪个失败了,系统日志中也没有事件告诉您哪个失败了,因此您必须对加载程序快照使用调试器。