具有函数和python ctypes的结构

2024-09-29 22:26:25 发布

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

我有一个c库,我想用Python2.7cTypes包装。在

typedef struct SRSLTE_API{
  void *ptr;
  uint32_t R;
  uint32_t K;
  uint32_t framebits;
  bool tail_biting;
  float gain_quant; 
  int16_t gain_quant_s; 
  int (*decode) (void*, uint8_t*, uint8_t*, uint32_t);
  int (*decode_f) (void*, float*, uint8_t*, uint32_t);
  void (*free) (void*);
  uint8_t *tmp;
  uint8_t *symbols_uc;
}srslte_viterbi_t;

如何在python中创建这个结构?这就是我目前所拥有的。在

^{pr2}$

此结构可编译,但不能给出正确的结果。恐怕我没有正确分配解码功能?线是什么

int (*decode) (void*, uint8_t*, uint8_t*, uint32_t);

在一个建筑里干什么?在


Tags: apifloatctypes结构structintgaindecode
1条回答
网友
1楼 · 发布于 2024-09-29 22:26:25

这是结构的正确定义:

from ctypes import *

class srslte_viterbi_t(Structure):
    _fields_ = [
        ('ptr',c_void_p),
        ('R',c_uint32),
        ('K',c_uint32),
        ('framebits',c_uint32),
        ('tail_biting',c_bool),
        ('gain_quant',c_float),
        ('gain_quant_s',c_int16),
        ('decode',CFUNCTYPE(c_int,c_void_p,POINTER(c_uint8),POINTER(c_uint8),c_uint32)),
        ('decode_f',CFUNCTYPE(c_int,c_void_p,POINTER(c_float),POINTER(c_uint8),c_uint32)),
        ('free',CFUNCTYPE(None,c_void_p)),
        ('tmp',POINTER(c_uint8)),
        ('symbols_uc',POINTER(c_uint8))]

viterbi_t = srslte_viterbi_t()

实例化时,ctypes初始化的结构为零。在

结构中的解码行是一个函数指针。CFUNCTYPE用于定义函数指针返回类型和参数。在

相关问题 更多 >

    热门问题