Python 将参数传递给参数不足(缺少20字节)调用的DLL函数过程

Python 将参数传递给参数不足(缺少20字节)调用的DLL函数过程,python,dll,ctypes,Python,Dll,Ctypes,我试图使用ctypes调用dll函数,但得到一个错误。我怎样才能得到更多关于我的电话有什么问题的信息 dll函数头: DLL_API BOOL WINAPI DDSSetFrequency(int index, double frequency, int* wavePointNum, int* TNum); python代码 from ctypes import * hantek = cdll.LoadLibrary("E:\Programmer's Guide\DLL\DDS3X25Dl

我试图使用ctypes调用dll函数,但得到一个错误。我怎样才能得到更多关于我的电话有什么问题的信息

dll函数头:

DLL_API BOOL WINAPI DDSSetFrequency(int index, double frequency, int* wavePointNum, int* TNum); 
python代码

from ctypes import *

hantek = cdll.LoadLibrary("E:\Programmer's Guide\DLL\DDS3X25Dll.dll")
print hantek.DDSSearch()

wavePointNum = c_int()
Tnum = c_int()
frequency = c_double(10000000.0)
index = c_int32(1)

hantek.DDSSetFrequency(index,frequency,byref(wavePointNum),byref(Tnum))


1
Traceback (most recent call last):
  File "3x25.py", line 17, in <module>
    hantek.DDSSetFrequency(index,frequency,byref(wavePointNum),byref(Tnum))
ValueError: Procedure called with not enough arguments (20 bytes missing) or wro
ng calling convention
从ctypes导入*
hantek=cdll.LoadLibrary(“E:\Programmer's Guide\DLL\DDS3X25Dll.DLL”)
打印hantek.DDSSearch()
wavePointNum=c_int()
Tnum=c_int()
频率=c_双倍(10000000.0)
索引=c_int32(1)
hantek.DDSSetFrequency(索引、频率、byref(wavePointNum)、byref(Tnum))
1.
回溯(最近一次呼叫最后一次):
文件“3x25.py”,第17行,在
hantek.DDSSetFrequency(索引、频率、byref(wavePointNum)、byref(Tnum))
ValueError:调用的过程没有足够的参数(缺少20个字节)或wro
ng呼叫约定

您可能还没有在这个项目上工作,但如果您还在工作(为了子孙后代的利益),我将提供一个我为HT1025G编写的演示工作界面的示例。
set\u-frequency
方法有点小气,我发现(未记录的)
set\u-divisior
方法运气更好。

尝试将DLL加载为
windell
并定义
hantek.DDSSetFrequency
函数的
argtypes
restype
。改为Windell有一些帮助,没有更多的错误。但是我仍然没有得到wavePointNum和Tnum中的返回值。你能解释一下定义argtypes和restype是什么意思吗?a根据docs hantek=windell.LoadLibrary(“E:\Programmer's Guide\DLL\DDS3X25Dll.DLL”)hantek.DDSSetFrequency.argtypes=[c_int,c_double,POINTER(c_int),POINTER(c_int)]hantek.DDSSetFrequency.restype=c_bool仍然无法从函数中获取任何信息。那些不需要任何参数的函数执行得很好。我现在正在尝试从VB的同一个dll,看看它是否在那里工作。。。