我已经搜索了这个问题的答案,但我一直空着。我设法让一些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)
答案 0 :(得分:2)
我解决了我的问题。在我使用它之前,我正在释放我的文件。所以我写的地方:
dll.freeFile(f)
当我没有时,我正在释放文件。所以我删除了那一行,现在它已经在代码的末尾了。讽刺的是,一旦我解决了这个问题,python给了我另一个......