我有以下提到的代码..
文件:a.h
#include <stdio.h>
#ifdef ALLOW
int check(int n);
#endif
SWIG:test.i
%module test
%{
#include "a.h"
%}
%include "a.h"
CMD:swig -python test.i
这是生成_test.so,当我将此库导入python时,这不会显示 检查功能 。
在制作中我可以使用-D
选项,比如gcc -DALLOW
a.c。
如何使用SWIG实现相同功能
答案 0 :(得分:1)
看起来很简单 - swig -DALLOW -python test.i
。
答案 1 :(得分:0)
您可以在SWIG界面中定义预处理器宏(即在.i文件中)。
所以在你的情况下你可能想要这样做:
%module test
%{
#include "a.h"
%}
#define ALLOW
%include "a.h"
这足以使SWIG本身“看到”#ifdef
内部,但是如果你想在生成的warpper代码中定义ALLOW
,你还要添加:
%module test
%{
#define ALLOW
#include "a.h"
%}
#define ALLOW
%include "a.h"
因为%{ ... %}
的内容直接传递给生成的代码,而普通#define
只会影响SWIG本身查看文件的方式。