Python结构

2024-09-24 02:28:44 发布

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

我尝试使用Ctypes将C结构转换为Python。在

我要转换的结构是:

typedef struct LibraryInfo
    {
        uint32_t    size;                                // Size of the structure
        char        libName[MAX_LIBRARY_NAME+1];                        // Library name
        char        provider[MAX_LIBRARY_PROVIDER_NAME+1];                  // Provider
        uint32_t    version;                                                    // Library version, i.e: 0x01030005 --> v.01.03.0005  
    } LibraryInfo;  

等效的Python代码是:

^{pr2}$

将此结构作为参数的函数是resCode = QueryLibraryInfo(&libraryInfo);

我得到的错误是invalid parameters passed。 这是一个库函数调用。 我在python HPDRLGL_MAX_LIBRARY_NAME=200 hpdrlg_MAX_LIBRARY_PROVIDER_NAME=200 class HPDRLGL_LibraryInfo(结构):fields=[(“size”,c\u uint),(“libName”,c_char*(HPDRLGL_MAX_LIBRARY_NAME+1)),(“PROVIDER”,c_char*(HPDRLGL_MAX_LIBRARY_PROVIDER_NAME+1)),(“版本”,我仍然得到同样的错误,无效的参数。如你所说,我已经传递了一个指向结构的指针。在


Tags: name参数sizeversion错误libraryprovider结构
1条回答
网友
1楼 · 发布于 2024-09-24 02:28:44

从函数签名来看,似乎需要传递一个指向结构的指针:

libraryInfo = LibraryInfo()
resCode = QueryLibraryInfo(byref(libraryInfo))

您应该在结构定义中保留+ 1。在

相关问题 更多 >