3

我想使用 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 源的某个根目录中自动递归搜索头文件?

4

2 回答 2

3

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

于 2012-12-19T18:56:12.427 回答
2

我知道您专门询问了 DCMTK,因此选择该选项可能有很好的理由,但是此信息可能对您或其他人有用:

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

于 2012-12-17T18:02:44.587 回答