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

问题描述 投票:2回答:1

我目前正在尝试将一些代码从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行为,默认情况下跳过该检查?

非常感谢 !

python windows dll dllimport
1个回答
1
投票

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

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

对不起,我找不到更一般的方法来解决这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.