使用joomla的网站,自助建站h5,网络营销自己做网站,哈尔滨网站建设培训班我是在搜索和尝试各种各样的例子后提出这个问题的#xff0c;但我似乎无法从加载的DLL调用函数。我想如果有人能给我举一个例子#xff0c;我就能理解我做错了什么#xff0c;并取得一些进展。在首先#xff0c;使用Python 3.3.3可以加载DLL#xff0c;如下所示#xff1…我是在搜索和尝试各种各样的例子后提出这个问题的但我似乎无法从加载的DLL调用函数。我想如果有人能给我举一个例子我就能理解我做错了什么并取得一些进展。在首先使用Python 3.3.3可以加载DLL如下所示import ctypesftdictypes.cdll.LoadLibrary(C:\\Python33\\DLLs\\FTCJTAG.dll)我可以调用一个不需要任何参数的函数得到一个有意义的数字。但是经过多次尝试我还是不知道如何将参数传递给函数(即指针、字符串、数字)。在例如在FTCJTAG.h中我们有这样一个^{pr2}$从DLL程序员指南FTC_STATUS JTAG_GetDllVersion(LPSTR lpDllVersionBuffer, DWORD dwBufferSize)This function returns the version of this DLL.ParameterslpDllVersionBuffer Pointer to the buffer that receives the version of this DLL.The string will be NULL terminated.dwBufferSize Length of the buffer created for the device name string. Set bufferlength to a minimum of 10 characters.Return ValueReturns FTC_SUCCESS if successful, otherwise the return value will be one of thefollowing error codes:FTC_NULL_DLL_VERSION_BUFFER_POINTERFTC_DLL_VERSION_BUFFER_TOO_SMALL*所以我试试这个version_string ctypes.c_char * 10string_ptrversion_string()ftdi.JTAG_GetDllVersion(string_ptr,ctypes.c_long(10))我把这个拿回来了Traceback (most recent call last):File C:\Python33\Scripts\FTDI.py, line 5, in ftdi.JTAG_GetDllVersion(string_ptr,ctypes.c_long(10))ValueError: Procedure called with not enough arguments (8 bytes missing) or wrongcalling convention我尝试了很多不同的方法来传递指向函数的指针或者字符串的长度但是仍然没有成功。在有人能提供一个例子说明如何将这些参数传递给这个函数吗我确信一旦我看到一个有效的例子我就可以想出如何调用这个DLL中其余的函数。在谢谢你的时间在编辑Daniel:谢谢您建议使用windll而不是cdll因为现在上面的函数调用执行得很好。但是如果我试图调用另一个函数我会得到一个不同的错误(我也搜索了很久很难解决)FTC_STATUS WINAPI JTAG_GetNumDevices(LPDWORD lpdwNumDevices);要调用此函数我将执行以下操作x ctypes.c_ulongx_ptr x()ftdi.JTAG_GetNumDevices(x_ptr)错误是Traceback (most recent call last):File C:\Python33\Scripts\FTDI.py, line 9, in ftdi.JTAG_GetNumDevices(x_ptr)OSError: exception: access violation writing 0x00000000我得到的结论是我没有传递指向函数的指针的正确地址但是经过多次搜索仍然没有找到答案。我相信这是很简单的事情。)再次感谢您的时间在