2012-09-27 72 views
3

我想使用SWIG爲DCMTK庫(使用C++編寫)創建C#封裝器。我有DCMTK完整的源代碼,但我有一個問題,我解決不了......使用SWIG的DCMTK庫的C#封裝器

我對夜風腳本是這樣的:

#ifndef WRAPPER_SWIG_I 
# define WRAPPER_SWIG_I 
%{ 
%} 

%include "include/dcmtk/dcmjpeg/ddpiimpl.h" 
%include "include/dcmtk/dcmjpeg/dipijpeg.h" 
%include "include/dcmtk/dcmjpeg/djcodecd.h" 
#endif 

然後我運行命令行痛飲:

swig -includeall -Wall -c++ -csharp -outdir $(SolutionDir)\dcmjpegcsharp\ -module dcmjpeg -namespace dcmjpeg dcmjpeg.i 

...它會拋出很多錯誤,它無法找到頭文件(包含在腳本中列出的這些文件中)。例如,頭文件「include/dcmtk/dcmjpeg/ddpiimpl.h」包含位於完全不同位置的文件「dcmtk/config/osconfig.h」。

問題是DCMTK庫的源代碼中的C++頭文件分散在多個文件夾中,它們「看不到對方」。 有沒有簡單的解決方案?也許強制SWIG自動遞歸搜索DCMTK源的某個根目錄中的頭文件?

+0

一般來說,我建議如果可能的話,避免使用SWALL的包含選項。如果需要,可以使用-I設置搜索路徑,方式與使用GCC相同。 – Flexo

回答

1

我知道你具體問DCMTK,所以有可能是這樣的選擇非常好的理由,但是這個信息可能是你或他人有用:

其他主要的DICOM的無線工具包(GDCM)已經有一個C#包裝,使用SWIG創建。 GDCM是用於Dicom IO的大型產品中的成熟的Dicom庫,例如ITK ..

2

另外,請查看FO-DICOM(以前稱爲mDCM)和ClearCanvas API(構建在mDCM上)。我發現它們比用於C#的DCMTk更容易使用。