2014-02-21 27 views
2

我正在嘗試在Java中爲C++解決方案創建一個包裝器。如何僅將一個類型映射應用於一個函數的爭論?

具有該C 2個fonctions ++項目:

int func1(const void* b); 
int func2(const void* b); 

我需要應用該規則(類型表)只對int func2(const void* b);:因爲const void *使用來自不同

%apply char *BYTE { const void* b }; 

這是一種約束功能到另一個。

備註:我沒有權利將fucn1的參數從b重命名爲其他名稱。

謝謝你。

+0

這仍然沒有答案? – Schollii

回答

1

嘗試%FUNC1和FUNC2申報之間明確:

%{ 
#include "funcs.h" 
%} 

%apply char *BYTE { const void* b }; 
int func1(const void* b); 
%clear const void* b; 

int func2(const void* b); 

還要注意,在聲明一個變量的名稱不影響所謂的代碼,例如,你應該能夠做到

%{ 
#include "funcs.h" 
%} 

%apply char *BYTE { const void* b }; 
int func1(const void* b); 
int func2(const void* c); 

(雖然頭文件聲明第一個參數爲b,但C++參數都是位置的,他們唯一關心的地方是函數體的定義(不是聲明),這不是SWIG使用上面應該使用的東西)。

+0

如果** func1 **和** func2 **在'%include''文件中定義,該怎麼辦?在這種情況下,可以在func1和func2之間插入'%clear'指令嗎? – woodenToaster

相關問題