[英]How can I call DLL function using ctypes in python?
我想將 DLL(C++) API 與 python 一起使用。 DLL 文件是來自 3M SDK的 MMMReaderHighLevelAPI.dll。
首先,我想通過獲取它的狀態來確定我是否可以連接到 3M 頁面閱讀器。 但是,它不起作用。
這是我嘗試過的代碼。
import ctypes
lib = ctypes.WinDLL(r"C:\Program Files\3M\3M Page Reader x64\3.3.3.10\Bin\MMMReaderHighLevelAPI.dll")
lib.MMMReader_GetState.argtypes = None
lib.MMMReader_GetState.restype = ctypes.c_char_p
call = lib.MMMReader_GetState()
print(call)
我None
從印刷中得到任何東西。
接下來我應該嘗試什么?
非常感謝您的幫助!
基於此處的 SDK 的 header 文件,以下代碼應該可以工作(但未經測試)。
您指向的 DLL 是 64 位的,但如果您想使用 32 位變體,則 DLL 的調用約定很重要,因此可能“WinDLL”必須替換為“CDLL”(64 位只有一個調用約定):
import ctypes
# Constants to compare to return value (may be incomplete, header file has more)
READER_NOT_INITIALISED = 0
READER_ENABLED = 1
READER_DISABLED = 2
lib = ctypes.WinDLL(r"C:\Program Files\3M\3M Page Reader x64\3.3.3.10\Bin\MMMReaderHighLevelAPI.dll")
lib.MMMReader_GetState.argtypes = None
lib.MMMReader_GetState.restype = ctypes.c_int
call = lib.MMMReader_GetState()
print(call)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.