簡體   English   中英

如何使用 python 中的 ctypes 調用 DLL function?

[英]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從印刷中得到任何東西。

接下來我應該嘗試什么?

這是我想使用的 function。

3M 頁面閱讀器程序員指南

非常感謝您的幫助!

基於此處的 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.

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