我在C代码中有以下变量,我将一些变量存储在2D数组中。我试图在python中访问此数组。我得到以下信息..如何从该数组中检索数据
的module.c
extern uint32_t array_variable[10][100]
module.h中
%module mod
%{
#include "module.h"
%}
%include "typemaps.i"
%include "module.h"
module.i
swig -python module.i
<Swig Object of type 'int (*)[100]'>
{{1}}
答案 0 :(得分:0)
暴露全局变量通常是一个坏主意,你应该使用一个函数来暴露静态信息。
非常粗糙的解决方案:
module.h中
extern uint32_t array_variable[10][100]
uint32_t* cast(uint32_t (*a)[100]);
module.cpp
uint32_t array_variable[10][100] = {{}};
uint32_t* cast(uint32_t (*a)[100]) {
return &(a[9][99]);
}
module.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
,然后将2D数组转换为1D阵列。