Использование библиотек gdcm в UE4

Для моего проекта UE4 я хочу использовать библиотеки GDCM для C++ для загрузки компьютерных томографов. Итак, я действительно много пробовал в последние несколько дней, но я все еще не могу использовать GDCM... Но где ошибка? Кто-нибудь может мне помочь?

  • Я успешно создал файлы dll и lib с помощью CMake (VS 2013 Win64).
  • Я поместил все библиотеки в ... Unreal Projects\VolumeImport\ThirdParty\Includes\GDCM\Libraries
  • Я добавил каждую из 16 библиотек в VolumeImport.Build.cs с помощью PublicAdditionalLibraries.Add(Path.Combine(LibrariesPath, "gdcmMSFF.lib")); PublicAdditionalLibraries.Add(Path.Combine(LibrariesPath, "gdcmCommon.lib")); ...
  • Я поместил все заголовочные файлы в Unreal Projects\VolumeImport\ThirdParty\Includes\GDCM\Includes
  • Я установил Includepath в это место в свойствах проекта.
  • Я поместил все dll в C:\Windows\System32.

Затем я использовал заголовки:

#include "VolumeImport.h"

#include <gdcmVersion.h>
#include <gdcmReader.h>
#include <gdcmPixmapReader.h>
#include <gdcmImageReader.h>
#include <gdcmAttributes.h>

bool CTFileLoader::Convert_DICOM()
{
    /** ... other well working code ... */

    gdcm::Trace::SetDebug(false); gdcm::Trace::SetError(true);

    gdcm::ImageReader reader;
    reader.SetFilename(files_to_process[i].c_str()); 
    if(!reader.Read()) { }

}   

И я получаю сообщение об ошибке в gdcmMediaStorage.h: «ошибка C4515:« gdcm »: пространство имен использует само себя».

Я пытался использовать разные включения, но это вызывает разные ошибки в разных заголовках... Что-то не так с библиотеками? Но я уверен, что они были добавлены, потому что использование только gdcmTrace.h и gdcm::Trace::functions работает нормально.


person MelD    schedule 30.09.2015    source источник


Ответы (1)


Теперь я получил решение:

  • В моем VolumeImport.Build.cs я дополнительно добавил библиотеки DLL: PublicDelayLoadDLLs.Add(Path.Combine(LibrariesPath, "gdcmMSFF.dll")); ...
  • Я изменил файл gdcmMediaStorage.h: закомментируйте «using namespace gdcm;»
  • Кроме того, у меня были проблемы с dynamic_cast с этой большой библиотекой, и ей нужно включить RTTI.
person MelD    schedule 08.10.2015