1
在DLL中我有以下結構使用Python ctypes的dll的工作 - 結構OUT參數
typedef struct USMC_Devices_st{
DWORD NOD; // Number of the devices ready to work
char **Serial; // Array of 16 byte ASCII strings
char **Version; // Array of 4 byte ASCII strings
} USMC_Devices; // Structure representing connected devices
的頭文件,我想調用DLL函數: DWORD USMC_Init(USMC_Devices & STR) ;
我試着用這樣的:
class USMCDevices(Structure):
_fields_ = [("NOD", c_long),
("Serial", c_char_p),
("Version", c_char_p)]
usmc = cdll.USMCDLL #this is the dll file
init = usmc.USMC_Init
init.restype = c_int32; # return type
init.argtypes = [USMCDevices]; # argument
dev = USMCDevices()
init(dev)
我這裏得到一個錯誤。我想問題是「串行」和「版本」,這兩個數組都對應於NOD(設備數量)。
任何想法如何解決這個問題?
我真的很感謝你的幫助!
謝謝你非常非常多! 你已經幫了我很多了! 但是,我仍然有一個問題。 dev.Serial [i] .value的指針不指向正確的位置。例如:在索引i = 0或i = 1時,我在dev.Serial [2] .value處得到了一個正確的串行字符串。我得到了錯誤的數據(數組的大小隻有兩個)。有任何想法嗎??? – jankos
此外:如果我將Structure更改爲並定義第一個版本,然後定義Serial,那麼該字符串位於dev.Serial [1]處,並且所有其他索引都會給出錯誤的結果。我真的很感激提示! – jankos
非常感謝。它現在有效!其他功能也正在工作。你幫了我很多!謝謝你,祝你有美好的一天! – jankos