从Python调用DLL函数

use*_*075 6 python dll

我想从Python调用DLL中的函数.但是我收到了这个错误:

"Attribute Error function not found"
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

import os
import ctypes


os.chdir("C:\\Program Files\\Compact Automated Testing System V2.0")    

# Load DLL into memory. 
CATSDll = ctypes.WinDLL ("CATS.dll")

# Set up prototype and parameters for the desired function call. 
CATSDllApiProto = ctypes.WINFUNCTYPE (ctypes.c_uint8,ctypes.c_double) 

CATSDllApiParams = (1, "p1", 0), (1, "p2", 0), 

# Actually map the call (setDACValue) to a Python name.
CATSDllApi = CATSDllApiProto (("setDACValue", CATSDll), CATSDllApiParams)

# Set up the variables and call the Python name with them. 
p1 = ctypes.c_uint8 (1)
p2 = ctypes.c_double (4)

CATSDllApi(p1,p2)
Run Code Online (Sandbox Code Playgroud)

但DLL文档显示了一个setDACValueChannelId&DAC Voltage作为输入的函数.

以上内容基于StackOverflow提供的一段代码.

我也尝试过使用cdll.LoadLibrary然后调用该函数的简单方法,但是也会出现同样的错误.

有谁能告诉我什么是错的?谢谢.

完全追溯:

Traceback (most recent call last):
  File "C:\Users\AEC_FULL\Softwares\eclipse\plugins\org.python.pydev_3.9.2.201502050007\pysrc\pydevd.py", line 2235, in <module>
    globals = debugger.run(setup['file'], None, None)
  File "C:\Users\AEC_FULL\Softwares\eclipse\plugins\org.python.pydev_3.9.2.201502050007\pysrc\pydevd.py", line 1661, in run
    pydev_imports.execfile(file, globals, locals)  # execute the script
  File "C:\Users\AEC_FULL\Saravanan\Workspace\CATS\CATS.py", line 18, in <module>
    CATSDllApi = CATSDllApiProto (("setDACValue", CATSDll), CATSDllApiParams)
AttributeError: function 'setDACValue' not found
Run Code Online (Sandbox Code Playgroud)

setDACValue的签名

kvo*_*iev 2

当您指定函数原型时,您不仅应该指定参数的类型,还应该指定返回类型作为WINFUNCTYPE的第一个参数。因此,该行

CATSDllApiProto = ctypes.WINFUNCTYPE (ctypes.c_uint8,ctypes.c_double)
Run Code Online (Sandbox Code Playgroud)

应替换为

CATSDllApiProto = ctypes.WINFUNCTYPE (ctypes.c_uint8, ctypes.c_uint8,ctypes.c_double)
Run Code Online (Sandbox Code Playgroud)