python使用ctypes处理dll结构OUT argumen

2024-05-21 12:54:36 发布

您现在位置:Python中文网/ 问答频道 /正文

文件头结构如下

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_设备和Str)

我试过这样:

^{pr2}$

我这里有个错误。我猜问题出在“Serial”和“Version”上,它们都是与NOD(设备数量)对应的数组。在

有什么办法解决这个问题吗?在

我真的很感谢你的帮助!!!在


Tags: 文件ofversionasciiserialbyte结构array
1条回答
网友
1楼 · 发布于 2024-05-21 12:54:36

POINTER(c_char_p)用于char **指针。索引Serial或{}为给定的以null结尾的字符串创建一个Python字符串。请注意,在NOD - 1之外的数组中建立索引要么产生垃圾值,要么会使解释器崩溃。在

C:

#include <windows.h>

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;

char *Serial[] = {"000000000000001", "000000000000002"};
char *Version[] = {"001", "002"};

__declspec(dllexport) DWORD USMC_Init(USMC_Devices *devices) {

    devices->NOD = 2;
    devices->Serial = Serial;
    devices->Version = Version;

    return 0;
}

// build: cl usmcdll.c /LD

Python:

^{pr2}$

输出:

000000000000001:001
000000000000002:002

相关问题 更多 >