天天看點

VS 2005中編譯DCMTK工具包

DCMTK的編譯

DCMTK 是一個開放程式代碼的 DICOM Toolkit,它提供讀取 DICOM 影像及進行傳輸通訊的函數庫,是目前最廣為應用的處理DICOM影像的工具包。

DCMTK提供的一系列的源碼,要使用該工具包則需要對其進行編譯,得到我們需要的庫檔案.lib,然後再和頭檔案一起加入到我們的工程中進行使用。

在程式中使用編譯的函數庫,主要是要把.h和.lib檔案加入到工程中。對于源碼來說.h檔案都相同,而.lib檔案一般來說會有debug版本和release版本,不同的版本隻是在對源碼進行編譯時,選擇的編譯模式不同,是以以debug版本為例說明在VS 2005下DCMTK的編譯方法。

1準備工作

首先是要下載下傳編譯的源檔案和工具。DCMTK下載下傳位址為:http://www.dcmtk.org/dcmtk.php.en;DCMTK最新版本為3.5.5,我們下載下傳的版本為3.5.4即下載下傳檔案dcmtk-3.5.4.zip;其次下載下傳支援工具包,支援工具包有兩種格式,MT和MD版本,我們下載下傳預設版本MT版本,檔案名:dcmtk-3.5.4-win32-i386-support.zip。最後下載下傳編譯工具Cmake,下載下傳位址為:http://www.cmake.org/cmake/resources/software.html;下載下傳版本為2.8.1的檔案即:cmake-2.8.1win32-x86.zip;我使用的是2.6.0版本的。

在任意盤,如C槽,建立檔案夾DCMTK,将下載下傳檔案均放到該檔案夾并解壓到目前檔案夾;然後建立三個檔案夾分别叫bin、lib和surport。把支援庫的檔案夾都移到surport中,而bin和lib用來放編譯結果。如圖1所示:

圖1準備檔案夾

2 向VS2005安裝目錄中添加支援庫檔案

在surport檔案夾中搜所include,将搜尋結果如圖2所示。

圖2 搜尋結果

将搜尋到的所有檔案全部複制到vs2005的VC目錄中,如我的路徑為D:/Program Files/Microsoft Visual Studio 8/VC;在彈出的“檔案替換确認”對話框中選擇全部,最後将xinclude.移到D:/Program Files/Microsoft Visual Studio 8/VC/include中。

同樣搜尋*_d.lib檔案,将其添加到D:/Program Files/Microsoft Visual Studio 8/VC/lib檔案夾中,檔案名中去掉_d(若編譯release版本,則搜尋*_o.lib檔案,複制到D:/Program Files/Microsoft Visual Studio 8/VC/lib檔案夾,再去除_o)。

最後接着搜尋bin ,将搜尋結果放到D:/Program Files/Microsoft Visual Studio 8/VC/bin。

此過程将DCMTK的支援庫檔案的debug版本轉換VS 2005的内在庫。

3 CMAKE工具的使用

1)更改編譯标志:打開C:/DCMTK/cmake-2.6.0-win32-x86/bin中的cmake-gui.exe程式,設定編譯的源代碼路徑和輸出路徑,在此都選擇C:/DCMTK/dcmtk-3.5;勾選“show advance entries”,然後将編譯的開關設定為MT,預設的為MD,結果如圖3所示。

圖3更改編譯标志

注:MT、MD是決定庫檔案的引用方法,在VS2005的MFC程式中,項目->屬性—>配置屬性->正常中,“MFC的使用”項中選擇“共享的DLL中使用MFC”時才選擇MD,其他兩種情況選擇MT。在使用Cmake是一定要保證:C:/DCMTK/dcmtk-3.5.4檔案夾中的CMakeLists.txt中,CMAKE程式的編譯開關,VS 2005中項目程式中的MT、MD标志一緻。

2)勾選全部支援庫,并且找到EXECUTABLE_OUTPUT_PATH和LIBRARY_OUTPUT_PATH分别設為C:/DCMTK/bin和C:/DCMTK/lib,這樣最後編譯出來的.lib檔案和exe檔案就在這兩個檔案夾中,如圖4所示。

圖4勾選支援庫和設定輸出目錄

3)點選Configure,選擇目前編譯器。然後點選Genarate,生成DCMTK的項目檔案。此時會出現紅色警告。讓你在某個目錄下的Cmakelist.txt檔案中的 ADD_EXECUTABLE(${PROGRAM} ${PROGRAM})行前添加:

if(COMMAND cmake_policy)

      cmake_policy(SET CMP0003 NEW)

    endif(COMMAND cmake_policy)

這是由于DCMTK3.5.4是對Cmake2.4版本的使用,使用高于2.6.0的Cmake進行編譯金輝出現此警告,在其彈出的指定檔案夾中的cmakelist檔案中相應的位置,添加要求添加的語句即可。 

4 VS 2005中進行編譯

1) 編譯ALL_BUILD:進入 C:/DCMTK/dcmtk-3.5.4 目錄,輕按兩下 dcmtk.sln檔案,在打開的項目中, 從主選單中選 "生成" - "批生成",在彈出的對話盒中勾選 "ALL_BUILD" 的 DEBUG方案,并按下 "生成"。編譯結果為62個成功,0個失敗。

2)編譯 INSTALL:主選單中選 "生成" - "批生成",在彈出的對話盒中勾選 " INSTALL " 的 DEBUG方案,并按下 "生成",結果顯示錯誤:

 CMake Error at dcmnet/apps/cmake_install.cmake:31 (FILE):

    file INSTALL cannot find "//dcmtkeay.dll".

這是因為編譯器找不到dcmtkeay.dll檔案,用記事本打開 C:/DCMTK/dcmtk-3.5.4/dcmnet/apps/cmake_install.cmake  檔案,為dcmtkeay.dll,指定絕對路徑:

把  "/dcmtkeay.dll" 改成"D:/Program Files/Microsoft Visual Studio 8/VC/bin/dcmtkeay.dll"

把 "dcmtkssl.dll"  改成  "D:/Program Files/Microsoft Visual Studio 8/VC/bin/dcmtkssl.dll";

       然後按上述步驟再重新編譯,結果應該是63個成功。此時在bin和lib檔案夾中就可以看到編譯生成的exe檔案和lib檔案。

5 VS 2005中使用DCMTK

主要介紹DEBUG版本的DCMTK庫在VS 2005中的應用。DCMTK的支援庫已經加入VS 2005的内置庫中,現在隻需要添加DCMTK的庫即可。

1)頭檔案飛安放:如同支援庫檔案的添加方法一樣,在C:/DCMTK/dcmtk-3.5.4中搜尋Include然後将搜尋結果放入到VS 2005中VC目錄下Include中。

2)庫檔案的安放:建立一個MFC工程,再将C:/DCMTK/lib檔案夾中放大.lib檔案放入工程檔案夾中,然後在stdafx.h中添加如下代碼:

#pragma comment(lib,"netapi32.lib")

              #pragma comment(lib,"wsock32.lib")

              #pragma comment(lib,"ofstd.lib")

              #pragma comment(lib,"dcmdata.lib")

              #pragma comment(lib,"dcmimgle.lib")

              #pragma comment(lib,"dcmimage.lib")

              #pragma comment(lib,"ijg8.lib")

              #pragma comment(lib,"ijg12.lib")

              #pragma comment(lib,"ijg16.lib")

              #pragma comment(lib,"dcmjpeg.lib")

              #pragma comment(lib,"dcmnet.lib")

              #pragma comment(lib,"dcmdsig.lib")

              #pragma comment(lib,"dcmsr.lib")

              #pragma comment(lib,"dcmtls.lib")

              #pragma comment(lib,"dcmpstat.lib")

              #pragma comment(lib,"dcmwlm.lib")

              #pragma comment(lib,"dcmqrdb.lib")

              #pragma comment(lib,"dcmtkeay.lib")

              #pragma comment(lib,"dcmtkssl.lib")

              #pragma comment(lib,"iconv.lib")

              #pragma comment(lib,"libtiff.lib")

              #pragma comment(lib,"libpng.lib")

              #pragma comment(lib,"libxml2.lib")

       #pragma comment(lib,"zlib.lib")    

這樣就可以在工程中使用DCMTK了,如果要改為release版本,則需要将DCMTK的支援庫、庫檔案的.lib檔案更換掉。

繼續閱讀