使用const指针参数进行Python ctypes访问冲突

时间:2014-06-27 15:19:17

标签: python ctypes

我有一个API我尝试使用ctypes包装在python(Win7上的2.7.6)代码中。以下是API:

CLIENT_DLLFUNC bool CLIENTAPI search_exportToClipCopy(CLIENTHSEARCH handle, int channel, LPCTSTR fileName, const time_t& from, const time_t& to, const bool* cameras, int length, bool usePassword, LPCTSTR password, bool includeTextIn = false, bool excludePlayer = false);

我遇到的问题是cameras参数;我也有其他const指针参数的问题。以下是我如何包装此API:

def search_exportToClipCopy(self, hSearch, cSearch, fileName, tFrom, tTo, cameras, length, usePassword, password, includeTextIn=True, excludePlayer=False):
    exportToClipCopy = self.sdkdll.search_exportToClipCopy
    exportToClipCopy.argtypes = [c_int, c_int, c_wchar_p, c_long, c_long, POINTER(c_bool), c_int, c_bool, c_wchar_p, c_bool, c_bool]
    exportToClipCopy.restype = c_bool
    exportToClipCopy(hSearch, cSearch, fileName, tFrom, tTo, cameras, length, usePassword, password, includeTextIn, excludePlayer)

除非我遗漏了某些内容,否则我现在应该可以使用上述类型的参数调用此python函数,我将点击API。但事实并非如此:

cam_ptr = pointer(c_bool())
search_exportToClipCopy(hSearch, cSearch, 'dltest.exe', 1399387862, 1399388162, (cam_ptr), 32, False, '', True, False)

结果如下:

exception: access violation reading 0x5368F802

这是我尝试过的一种方式,其中包括一些方法。我使用来自同一客户端的另一个API(虽然是一个不同的dll)做了完全相同的事情,其中​​参数是一个NON-const bool指针,一切都很好。我做错了什么?

0 个答案:

没有答案