使用SWIG的DCMTK库的C#包装器

时间:2012-09-27 12:59:33

标签: c# c++ wrapper swig dicom

我想使用SWIG为DCMTK库(用C ++编写)创建C#包装器。我有完整的源代码DCMTK,但我有一个问题我无法解决......

我的SWIG脚本如下所示:

#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:

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源的某个根目录中的头文件?

2 个答案:

答案 0 :(得分:3)

另外,请查看FO-DICOM(以前称为mDCM)和ClearCanvas API(基于mDCM构建)。我发现它们比用于C#的DCMTk更容易使用。

答案 1 :(得分:2)

我知道你具体询问过DCMTK,所以这个选择可能有很好的理由,但是这些信息可能对你或其他人有用:

另一个主要的Dicom takeit(GDCM)已经有了一个使用SWIG创建的C#包装器。 GDCM是一个成熟的Dicom库,用于Dicom IO的大型产品,例如: ITK ..