gpt4 book ai didi

python - swig:如何在 Python 中访问 C 数组

转载 作者:太空宇宙 更新时间:2023-11-04 04:24:20 24 4
gpt4 key购买 nike

我在 C 代码中有以下变量,我将一些变量存储在二维数组中。我试图在 python 中访问这个数组。我正在获取以下信息..如何从该数组中检索数据

模块.c

uin32_t  array_vaiable[10][100]

模块.h

extern uint32_t array_variable[10][100]

模块.i

%module mod
%{
#include "module.h"
%}
%include "typemaps.i"
%include "module.h"
swig -python module.i

<Swig Object of type 'int (*)[100]'>

最佳答案

公开全局变量通常不是一个好主意,您应该使用一个函数来公开静态信息。

一个非常粗略的解决方案:

模块.h

extern uint32_t array_variable[10][100]
uint32_t* cast(uint32_t (*a)[100]);

模块.cpp

uint32_t array_variable[10][100] = {{}};
uint32_t* cast(uint32_t (*a)[100]) {
return &(a[9][99]);
}

模块.i

%module example
%{
#include "test.h"
%}

%include "stdint.i"
%include "cpointer.i"
%pointer_functions(uint32_t, uint32p);

%include "test.h"

并在 Python 中执行以下操作以访问例如第一个元素

import example
example.uint32p_assign(example.cast(example.cvar.array_variable),2)
example.uint32p_value(example.cast(example.cvar.array_variable))

如果您想访问其他元素,可以在将二维数组转换为一维数组后使用 carrays.i

关于python - swig:如何在 Python 中访问 C 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43244166/

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