Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
指向结构数组作为方法参数的Swig Python指针_Python_C_Pointers_Structure_Swig - Fatal编程技术网

指向结构数组作为方法参数的Swig Python指针

指向结构数组作为方法参数的Swig Python指针,python,c,pointers,structure,swig,Python,C,Pointers,Structure,Swig,我已经了解了如何使用接口文件中的%apply处理指向标准类型(如int)的指针参数。我在使用一个以指向结构数组的指针作为参数的函数时仍然遇到问题 我已经阅读了Swig 3.0文档中关于未绑定数组、结构和创建自己的类型映射的内容,但是文档中还说,在大多数情况下,您不需要创建类型映射 如果我真的需要一个类型映射,或者如果有另一种方法可以让下面的方法在python中工作,有人能帮我澄清一下吗 正在包装相关的C代码 typedef struct _DRIVE { int nDriveId;

我已经了解了如何使用接口文件中的
%apply
处理指向标准类型(如
int
)的指针参数。我在使用一个以指向结构数组的指针作为参数的函数时仍然遇到问题

我已经阅读了Swig 3.0文档中关于未绑定数组、结构和创建自己的类型映射的内容,但是文档中还说,在大多数情况下,您不需要创建类型映射

如果我真的需要一个类型映射,或者如果有另一种方法可以让下面的方法在python中工作,有人能帮我澄清一下吗

正在包装相关的C代码

typedef struct _DRIVE
{
    int nDriveId;
    DRIVE_TYPE nDriveType;
    DEV_STATUS sStatus;
    char strDriveName[64];
    char strSerialNumber[24];
    char strFirmwareRev[16];
    char strModelNumber[48];
    unsigned long long ullTotalCapacity;
    int nSMARTEnabled;
    DRIVERINFO Driver;

    union
    {
        SMARTATTRIBUTE smartAttributes[MAX_SUPPORTED_ATTRIBUTES];
        NVME_SMART_DATA sSmartData;
        SAS_SMART_DATA sSASSmartData;
    };

    SMARTTHRESHOLD smartThresholds[MAX_SUPPORTED_ATTRIBUTES];

    union
    {
        CLIENT_DRIVE_INFO ClientDriveInfo;
        NVME_DRIVE_INFO NVMEDriveInfo;
        SAS_DRIVE_INFO SASDriveInfo;
    };
} DRIVE, *PDRIVE;
指针指向结构(
pDrives
)数组的方法

Swig接口文件:

%module api_python64
%include "typemaps.i"

%{
/* Include the headers in the wrapper code */
#include "API-STATUS.h"
#include "API.h"
%}

/* Typemaps */
%apply int *INOUT { int *nMaxDrives };

/* Parse the header files to generate wrappers */
%include "STATUS.h"
%include "API.h"
目前,我尝试将Python作为第一个参数传递给我:

TypeError:在方法“GetAllDriveInfo”中,参数1的类型为“PDRIVE”


使用
array\u函数(struct\u DRIVE,\u DRIVEArray)
生成用于创建数组、设置和从数组中获取结构的函数。你不需要别致的打字机。你介意举个例子吗。i文件,在python中使用它等?例如,请参阅使用
数组函数(struct\u DRIVE,\u DRIVEArray)
生成用于创建数组、设置和从数组中获取结构的函数。你不需要别致的打字机。你介意举个例子吗。i文件,在python等中使用它?参见。
%module api_python64
%include "typemaps.i"

%{
/* Include the headers in the wrapper code */
#include "API-STATUS.h"
#include "API.h"
%}

/* Typemaps */
%apply int *INOUT { int *nMaxDrives };

/* Parse the header files to generate wrappers */
%include "STATUS.h"
%include "API.h"