%typemap指令未在SWIG中编译

时间:2018-06-21 07:40:15

标签: c python-3.x swig

我正在使用SWIG 3.0将C项目包装为python。我在接口文件中使用了一些指令,例如%extend,%inline,%array_class,它们运行良好。我正在尝试使用%typemap解决双指针参数。但是,在添加%typemap行并生成swig生成包装的代码后, example_wrap.c中的任何更改都没有。

我尝试过更改其他指令之间的顺序,并且确定可以编辑正确的文件。 swig -python -Iinclude example.i时是否需要其他选项?还是有人知道如何调试它?

编辑:
这是删除不必要的行后的代码。我不认为问题出在这里,因为即使括号中的语法错误,结果仍然是相同的。

example.i:

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

typedef long int ssize_t;
typedef long int time_t;

%typemap(in) qry_t **q (qry_t *ptr) {
   $1 = &ptr;
}

终端:

[feng@dev test]$ swig -python -Iinclude mbsrch.i
[feng@dev test]$

我还尝试再次安装SWIG,以防丢失文件,但仍然无法正常工作。

1 个答案:

答案 0 :(得分:1)

您将使用%include之前,您的typedef和typemap必须是可见的,如下所示:

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

typedef long int ssize_t;
typedef long int time_t;

%typemap(in) qry_t **q (qry_t *ptr) {
   $1 = &ptr;
}

%include "example.h"

您可以使用SWIG的-debug-tmsearch参数对此进行验证,该参数显示如何应用匹配项。