2015-08-28 27 views
0

我已經使用SWIG tutorial的「真正的懶惰」方法成功地爲C#打包了一個C++庫。它看起來像這樣:我可以在SWIG接口文件中結合顯式聲明和「真正懶惰」聲明嗎?

%module example 
%{ 
/* Includes the header in the wrapper code */ 
#include "header1.h" 
#include "header2.h" 
%} 

/* Parse the header file to generate wrappers */ 
%include "header1.h" 
%include "header2.h" 

但是,這並不公開所有我想要的類和方法。我可以以某種方式添加顯式引用來創建缺少的類和方法嗎?

回答

0

所有的類和方法應該通過「真正懶惰」的方法暴露。如果有任何遺漏,有些事情是錯誤的。

有一些潛在的原因。例如,方法/類可能被定義在不同的頭文件中,或者您誤解了包含哪些頭文件。

就我而言,這是因爲我想要的類實際上是一個模板,並且SWIG不會生成模板。你必須按照以下方式調用的具體類的創建:

%include "header1.h" 
// defines List<T>, but doesn't generate List 
%template(ListFloat) List<float>; 
// now creates a concrete class called ListFloat, 
// includes all the methods from that class 

欲瞭解更多詳細信息,在夜風3.0手動看到"Templates"