将typedef与SWIG一起使用

时间:2012-11-16 09:06:35

标签: python c swig

我有一个包含typedef结构定义的C头文件,以及一个带有typedef的char定义数组:

/* File: test.h */

typedef struct
{
    char *key;
    void *value;
    int size;
} cti_pair;

typedef char FOO[CONST];

SWIG接口文件包含以下行:

/* File: test.i */
%module test

%{
#define SWIG_FILE_WITH_INIT
#include "/home/users/jdoe/workspace/project/src/lib-cti/test.h"
...
%}

#ifndef CTI_TYPES_H_
#define CTI_TYPES_H_
#include "cti_const.h"

typedef char FOO[CONST];

typedef struct
{
    char *key;
    void *value;
    int size;
} cti_pair;

问题是我可以访问cti_pair结构,但不能在我的python脚本中使用FOO(它没有定义)。

1 个答案:

答案 0 :(得分:0)

好的,只要找出问题所在。 实际上,我在接口文件的另一部分使用了%extend。但是这个关键字只能在结构上使用,而不能在基本的typedef上使用(如果我们使用%扩展错误的方式,SWIG不会显示任何错误信息)。

事实上,FOO已定义。问题与此无关。谢谢!