【问题标题】:How to convert a returned DWORD value in python?如何在 python 中转换返回的 DWORD 值?
【发布时间】:2019-07-24 14:14:03
【问题描述】:

我第一次使用 ctypes 来导入 DLL。我导入的 DLL 包含一个返回 DWORD 值的函数。 如何转换这个 DWORD 值?

对于其他接受 WORD 参数值的函数,我尝试了类似的方法(在堆栈溢出中找到)。

from ctypes import *
my_dll = ctypes.windll.LoadLibrary (r"C:\\Users\\Mimouni\\Documents\\FFT_python\\Sense2020Dll.dll")
py_DLL_Acquire_Spectrum = my_dll.DLL_Acquire_Spectrum
py_DLL_Acquire_Spectrum.argtypes = [POINTER(c_double),POINTER(c_double),POINTER(c_double)]
py_DLL_Acquire_Spectrum.restype = None
pdblWavelength = (c_double)(my_dll.DLL_Get_Pixel_Count()) 
pdblPower = (c_double)(my_dll.DLL_Get_Pixel_Count())
pdblTemperature = (c_double)(0)
py_DLL_Acquire_Spectrum(pdblWavelength,pdblPower,pdblTemperature)

如何将 wintypes 用于返回值?

提前谢谢你。

【问题讨论】:

  • 以上代码有什么问题?还请发布您正在使用的函数的 C(标头)声明。

标签: python-3.x dll ctypes dword


【解决方案1】:

如果你有一个DWORD 类型的变量x(它只是ctypes.c_ulong 的别名),你可以使用a.value 来获取它的int 值。

【讨论】:

  • >>> my_dll.DLL_Get_DLL_Version() >21922080
  • 谢谢你的回复,我有这样的东西,这是一个返回值我怎么能放.value?
  • 如果 my_dll.DLL_Get_DLL_Version() 是返回 dword 值的函数,您只需从中获取值。 my_dll.DLL_Get_DLL_Version().value
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-01
  • 2020-11-14
  • 1970-01-01
  • 2012-05-20
  • 1970-01-01
  • 1970-01-01
  • 2011-01-03
相关资源
最近更新 更多