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

最佳答案

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

关于c# - 使用SWIG的DCMTK库的C#包装器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12621986/

10-09 08:12