%typemap 指令未在 SWIG 中编译

The %typemap directive doesn't been compiled in SWIG

我正在使用 SWIG 3.0 将我的 C 项目打包到 python。我在接口文件中使用了一些指令,例如 %extend、%inline、%array_class,它们工作正常。我正在尝试使用 %typemap 来解决双指针参数。然而,添加 %typemap 行后 example_wrap.c 没有任何变化 ,swig 生成包装代码时也没有任何错误消息

我曾尝试更改其他指令之间的顺序,我确信我编辑了正确的文件。 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) {
    = &ptr;
}

终端机:

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

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

您的类型定义和类型映射需要在 %include 之前可见,它们将被使用,如下所示:

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

typedef long int ssize_t;
typedef long int time_t;

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

%include "example.h"

您可以使用 SWIG 的 -debug-tmsearch 参数验证这一点,它显示了如何应用匹配。