Swig编译:强制从指定的目录路径中选择标头

时间:2013-10-23 19:09:37

标签: python c interface swig

这与在swig编译期间包含Header有关:

接口文件(比如foo.i)有一些包含如下:

%模块绑定

%{

#include“foo.h”

%}

文件foo.h出现在我构建swig源的当前目录中,如下所示: swig -perl5 foo.i (这里选择foo.h从当前目录)

如果我想从其他目录而不是当前目录中包含foo.h,我尝试这样的事情: swig -perl5 -I / DIR_PATH foo.i (这里也从当前目录中选择foo.h)

即使尝试这种方法,foo.h再次从当前目录中选择,而不是从指定的DIR_PATH 中选择。请建议忽略当前目录中存在的foo.h的方法,并强制它在指定的DIR_PATH中选择foo.h。

我检查了相关帖子(In SWIG compilation : In header file in interface is unable to resolve other header files.),但它没有回答我的问题。

2 个答案:

答案 0 :(得分:0)

%{...%}之间的任何内容都会逐字复制到SWIG生成的.c文件中。因此,这不是SWIG问题,而是编译器问题。确保为编译器命令提供-I,以便它可以找到包含的头文件:

swig -perl5 foo.i
gcc -I /path/to/headers -c bindings.c

第一行生成bindings.c,它将包含您在foo.i中的%{...%}块中定义的任何代码。

答案 1 :(得分:0)

使用#include <foo.h>。大多数编译器使用""来搜索当前目录,然后搜索包含路径,并使用<>来搜索包含路径。