我正在使用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,以防丢失文件,但仍然无法正常工作。
答案 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
参数对此进行验证,该参数显示如何应用匹配项。