我目前正在尝试将一些代码从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行为,以便默认跳过该检查?
非常感谢!
答案 0 :(得分:1)
感谢您的评论,我已经解决了我的问题。
WxWidgets已在2天前更新。我已经用这个新版本重新编译了我的dll并且bug已经消失了。
抱歉,我找不到更一般的方法解决问题。