2015-09-30 78 views
1

對於我的UE4項目,我想使用C++的GDCM庫來加載CT掃描。所以在過去的幾天裏我真的嘗試了很多,但我仍然無法使用GDCM ......但錯誤在哪裏?有人能幫我嗎?在UE4中使用gdcm庫

  • 我用CMake(VS 2013 Win64)成功創建了dll和lib文件。
  • 我把所有的庫中......虛幻項目\ VolumeImport \第三方\包括\ GDCM \庫
  • 我加入各16個庫在VolumeImport.Build.cs與 PublicAdditionalLibraries.Add(Path.Combine (LibrariesPath,「gdcmMSFF.lib」)); PublicAdditionalLibraries.Add(Path.Combine(LibrariesPath,「gdcmCommon.lib」)); ...
  • 我把所有的頭文件放在虛幻Projects \ VolumeImport \ ThirdParty \ Includes \ GDCM \包含
  • 我在項目屬性中設置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 ::函數工作正常。

回答

1

現在,我得到了解決:

  • 在我VolumeImport.Build.cs我還添加了DLL文件: PublicDelayLoadDLLs.Add(Path.Combine(LibrariesPath, 「gdcmMSFF.dll」)); ...
  • 我更改了gdcmMediaStorage.h文件:註釋掉「using namespace gdcm;」
  • 此外,我有這個大型庫dynamic_cast問題,它需要啓用RTTI