python3 ctypes的无效句柄错误-昨天工作

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

我有一个脚本,在其中需要从DLL调用其他软件的函数。该脚本昨天和过去几个月运行了,但今天停止了。昨天我确实卸载并重新安装了python,因为我遇到了其他不相关的问题。

gmAPI = cdll.LoadLibrary(
    "C:/Program Files (x86)/GoldMine/gm7s32.dll")
recid = create_string_buffer(16)
gmAPI.GMW_NewRecID(recid, username)

这是代码的一部分,正在尝试执行第三行,我得到的错误代码为6,无效句柄。这是一个32位dll,尽管已重新安装,但我正在同一32位解释器上运行它。

我的cdll对象显示如下:

<CDLL 'C:\Program Files (x86)\GoldMine\gm7s32.dll', handle 10000000 at 0x3f44280>

但是,该对象的_handle是:268435456。

我不是ctypes方面的专家,但是我认为100000000是无效的句柄,但是我希望它与对象的_handle一致。我不知道为什么这会改变。我以前已经在具有多个解释器的多台计算机上运行它。

python dll ctypes
1个回答
0
投票

现在正在工作。我认为切换到windll而不是cdll可以解决问题。不过,仍然不知道为什么它一直起作用然后又停止了,所以,如果有人愿意提供一种理论,那就继续吧。

gmAPI = windll.LoadLibrary(
    'C:/Program Files (x86)/GoldMine/gm7s32.dll')
recid = create_string_buffer(16)
gmAPI.GMW_NewRecID(recid, username)
© www.soinside.com 2019 - 2024. All rights reserved.