2014-02-14 94 views
0

使用受限的代碼我有一個代碼中提到以下..如何通過痛飲

文件:啊

#include <stdio.h> 

#ifdef ALLOW 
int check(int n); 
#endif 

痛飲:test.i

%module test 
%{ 
    #include "a.h" 
%} 

%include "a.h" 

CMD:swig -python test.i

這是生成一個_test.so,當我導入這個庫到python這不顯示檢查功能已定義。

在使我可以使用-D選項,說gcc -DALLOW a.c.

我如何使用痛飲

回答

1

至於因爲它看起來很容易達到相同的 - swig -DALLOW -python test.i

+0

感謝您的回覆。它有幫助。 –

0

您可以在SWIG接口本身(即在.i文件內)定義預處理器宏。

所以你的情況,你可能想要做的:

%module test 
%{ 
    #include "a.h" 
%} 

#define ALLOW 
%include "a.h" 

這足以讓SWIG自身「看到裏面的」 #ifdef,但如果你想有ALLOW生成的warpper代碼中定義的,以及你倒是要添加:

%module test 
%{ 
    #define ALLOW 
    #include "a.h" 
%} 

#define ALLOW  
%include "a.h" 

因爲%{ ... %}的內容直通到生成的代碼,而普通#define通過隻影響痛飲本身如何看待該文件。