OSError:使用ctypes调用DLL时访问冲突读取0xXXXXXXXXXXX错误

时间:2017-07-11 14:57:27

标签: python dll ctypes access-violation

我已经搜索了这个问题的答案,但我一直空着。我设法让一些DLL正常工作,但这个给了我一些麻烦:

import ctypes
from ctypes import *
import my_module

dll = CDLL('C:\\Path_to_dll')
MF = (b'C:\\Path_to_file')

这不起作用:

PN = (b'parameter_name')
beginTime = ctypes.c_double(-value)
endTime = ctypes.c_double(+value)
DT_RETURNGMT = 0x0100
DT_FLOAT = 0x0001
convertType = (DT_RETURN|DT_BOOL)
Null = 0

dll.readPam.argtypes = POINTER(File), c_char_p, 
c_double, c_double, c_double, POINTER(TTag), c_ushort,
dll.readPam.restype = POINTER(Pam)

这是出现错误的地方:

g = dll.readPam(f, PN, beginTime, endTime, Null, Null, convertType)

OSError: exception: access violation reading 0x0000000000000000

我的问题是:错误表明它无法读取,我该如何解决? dll应该做的是在我输入时打印出数据值:

print(g)
print(g[0].tS[0].data)
dll.freePam(g)

1 个答案:

答案 0 :(得分:2)

我解决了我的问题。在我使用它之前,我正在释放我的文件。所以我写的地方:

dll.freeFile(f)

当我没有时,我正在释放文件。所以我删除了那一行,现在它已经在代码的末尾了。讽刺的是,一旦我解决了这个问题,python给了我另一个......