gpt4 book ai didi

python - 使用 SWIG 在 Python 中访问结构

转载 作者:太空宇宙 更新时间:2023-11-04 02:40:45 26 4
gpt4 key购买 nike

我是否必须在接口(interface)文件中完全重新定义给定的 struct(在编译中包含的 .c 文件中给出)以使其可通过 python 访问?

编辑:如果在头文件中定义,我只需要在接口(interface)文件中包含头文件,对吧?

最佳答案

我认为您不必这样做,除非您想向 C 结构添加成员函数。

/* file : vector.h */
...
typedef struct {
double x,y,z;
} Vector;


// file : vector.i
%module mymodule
%{
#include "vector.h"
%}

%include "vector.h" // Just grab original C header file

向 C 结构添加成员函数

/* file : vector.h */
...
typedef struct {
double x,y,z;
} Vector;


// file : vector.i
%module mymodule
%{
#include "vector.h"
%}
%extend Vector { // Attach these functions to struct Vector
Vector(double x, double y, double z) {
Vector *v;
v = (Vector *) malloc(sizeof(Vector));
v->x = x;
v->y = y;
v->z = z;
return v;
}
~Vector() {
free($self);
}
double magnitude() {
return sqrt($self->x*$self->x+$self->y*$self->y+$self->z*$self->z);
}
void print() {
printf("Vector [%g, %g, %g]\n", $self->x,$self->y,$self->z);
}
};

SWIG-1.3 Documentation

关于python - 使用 SWIG 在 Python 中访问结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32098093/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com