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

时间:2018-02-28 15:14:04

标签: 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.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位Windows 7)上试过我的dll,没问题,一切正常。 我已经在C程序中的同一个64位Windows 10机器上尝试了这个DLL,LoadLibrary(“my.dll”)也失败但LoadLibraryEx(“my.dll”,NULL,DONT_RESOLVE_DLL_REFERENCE)确实有效。

当我在我的dll上运行一个依赖性walker时,似乎错过了一些2到4个深度级别的dll,但奇怪的是,如果在C程序中正确调用它,它似乎不会影响它的工作。

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

非常感谢!

1 个答案:

答案 0 :(得分:1)

感谢您的评论,我已经解决了我的问题。

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

抱歉,我找不到更一般的方法解决问题。