Я хочу создать оболочку C # для DCMTK библиотека (которая написана на C ++) с использованием SWIG. У меня есть полный исходный код 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», который находится в совершенно другом месте.
Проблема в том, что файлы заголовков C ++ в DCMTK Исходный код библиотеки разбросан по нескольким папкам, и они «не видят друг друга».
Есть ли простое решение для этого? Может быть, заставить SWIG автоматически и рекурсивно искать файлы заголовков в некотором корневом каталоге источника DCMTK?
Кроме того, проверить FO-DICOM (ранее mDCM) и ClearCanvas API (построенный на mDCM). Я обнаружил, что с ними гораздо проще работать, чем с DCMTk, обернутым для C #.
Я знаю, что вы спрашивали конкретно о DCMTK, поэтому для такого выбора могут быть очень веские причины, однако эта информация может быть полезна вам или другим:
Другой главный Dicom Takeit (GDCM) уже есть оболочка C #, созданная с помощью SWIG. GDCM — это зрелая библиотека Dicom, используемая в больших продуктах для Dicom IO, например, ИТК..