簡體   English   中英

從Python調用DLL函數

[英]Calling a DLL function from Python

我想從Python調用DLL內的函數。 但我收到此錯誤:

"Attribute Error function not found"

這是我的代碼:

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)

但是DLL文檔顯示了帶有ChannelIdDAC Voltage作為輸入的setDACValue函數。

上面是基於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

setDACValue的簽名

當指定函數原型時,不僅應指定參數的類型,還應指定返回類型作為WINFUNCTYPE的第一個arg。 因此,線

CATSDllApiProto = ctypes.WINFUNCTYPE (ctypes.c_uint8,ctypes.c_double)

應該替換為

CATSDllApiProto = ctypes.WINFUNCTYPE (ctypes.c_uint8, ctypes.c_uint8,ctypes.c_double)

嘗試這個。 您可能需要使用WinDLL ,但是CDLL更有可能:

from ctypes import *

cats = CDLL('CATS')
cats.setDACValue.argtypes = [c_uint8,c_double]
cats.setDACValue.restype = c_uint8

cats.setDACValue(1,4)

如果仍然找不到setDACValue ,則可以使用Microsoft工具dumpbin在DLL中列出導出的函數名稱:

dumpbin /exports CATS.dll

它隨Visual Studio一起安裝在安裝目錄下的VC \\ bin目錄中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM