【前言】 linux
最近,由於須要開發DICOM網管模塊,必須使用DCMTK的DcmNet模塊。可是DCMTK3.6.0在DcmNet模塊中只提供兩個實驗階段的網絡類DcmSCU和DcmSCP。並且他們並無徹底實現DICOM的C-Echo、C-Find、C-Get、C-Move和C-store操做。只實現了C-Echo和C-Find操做。windows
調研了一番,發現DCMTK小組在最新的snapshot版本中(DCMTK3.6.1 2012-08-31),已經實現了DICOM所有操做。並且他們官方論壇中,開發人員在回答疑問時候,針對3.6.0中出現的bug等問題。他們也是鼓勵你們直接用最新的DCMTK3.6.1.api
固然他們也建議你們本身去經過底層代碼實現DcmScu的其餘的操做。不過對於咱們這種新手來說確實很困難,並且關鍵問題在後期的3.6.1版本的代碼變化很大。咱們本身手寫的,之後不方便兼容。服務器
因此最終我仍是下載了最新的DCMTK3.6.1-20120831,可是他有一個問題,目前只支持在linux上編譯和運行。windows環境,他們並無提供支持庫。因而又讓我躊躇了一番,本身也手動試着基於3.6.0寫了點代碼,可是真的是超級難。最終下定決心在win7上編譯3.6.1,並利用DCMTK3.6.0的support(MD)Library。在DCMTK官方論壇開發人員的幫助下,最終編譯成功。也實現DcmScu的例子網絡訪問。網絡
【開發環境】app
操做系統:win7 32bitide
開發工具:VS2008 + Qt4.7.4工具
一、DCMTK: DCMTK3.6.120120831開發工具
二、DCMTK support libraries for windows: dcmtk-3.6.0-win32-i386-support_MD.zip測試
三、CMake:cmake-2.8.9-win32-x86.exe
目前個人Qt項目都是基於MD/MDd的運行時庫。
【安裝過程】
一、將支持庫中的相應lib文件,include文件,bin文件拷貝到VS2008安裝目錄的相應文件夾下。
二、CMake編譯
A、設置source code 路徑: D:\DCMTK\dcmtk-3.6.1_20120831
B、設置binaries路徑: D:\DCMTK\DCMTK-bin
C、選擇Configure:visual studio 9 2008
D、等待configure完畢後,會有不少find和not find,無所謂。
E、選中Advanced單選框,而後在紅色區域設置:
set DCMTK_OVERWRITE_WIN32_COMPILER_FLAG = OFF;(不選中,這樣可使生成項目運行時庫都是MD/MDd,而不是默認的MT/MTd)
set "DCMTK_WITH_ICONV" to "ON" (選中)
set "DCMTK_WITH_OPENSSL" to "ON"(選中)
set "DCMTK_WITH_PNG" to "ON" (選中)
set "DCMTK_WITH_TIFF" to "ON" (選中)
set "DCMTK_WITH_XML" to "ON" (選中)
set "DCMTK_WITH_ZLIB" to "ON" (選中)
F、點擊Generate,很快就完成。這時候VS項目源碼已經生成。
三、VS2008編譯項目源碼
A、用VS打開 D:\DCMTK\DCMTK-bin\DCMTK.sln
B、點擊Build->Batch Build,選擇ALL_BUILD項目的debug版,點擊右邊的Build。耐心等待。會有不少個warning,應該是由字符編碼不統一引發的。最後會看到82個編譯 成功,0個失敗。
C、再選擇Build->Batch Build,此次選擇INSTALL項目的debug版本,點擊右邊的Build。最後會顯示1個工程編譯成功,這時在你選擇的安裝目錄下(默認是C:\Program Files\DCMTK)就會有lib,bin,include,etc,share文件夾,裏面就是以後寫程序作醫學圖像處理所須要的庫文件了
四、代碼測試
F. Debug,ok,編譯工程,運行成功。訪問了www.dicomserver.co.uk的DICOM服務器。
源代碼以下: