100%通過DCMTK(3.54/3.55)編…

很詳細~

一個叫做“大哥”的前輩高手整理的文章,非常詳細,對於剛接觸DCMTK的新手非常有幫助,俺就是在他的幫助下調通DCMTK的,如此經典的文章必須收藏。^_^

 

 

獻給有志於使用DCMTK但又在編譯出現問題的同學,千萬別在起步就失去信心。
假設:1、VC 安裝目錄是 C:/Program Files/Microsoft Visual Studio 10.0/VC下面我以  $VCDIR$  來表示這個路徑


        2、假設現在要編譯DEBUG MT版本的DCMTK.
         注:要編譯爲MT還是MD選項的程序,決定於你自己最後編寫的軟件的MD/MT選項.
            DCMTK支持庫(就是DCMTK-3.5.4-WIND32-I386-SUPPORT) 還有你寫出來的軟件,這三者的MT/MD選項一定要一致。
             本文假設你最後編寫的軟件用MT選項,那麼你下載支持庫的時候就選下面支持庫:(/MT) 那zip壓縮包.

        3、爲了圖片少點其他文件夾困擾你的視線,我假設下載的DCMTK解壓後路徑爲O:/dcmtk354/dcmtk-3.5.4,CMAKE生成DCMTK的方案目標文件夾也是O:/dcmtk354/dcmtk-3.5.4。看看圖片那幾個目錄的結構,貼幾張圖吧:)







        4、3.5.5支持庫其實自己也可以整理的,事實上3.5.5的編譯比3.5.4順利。不過3.5.5暫時未正式RELEASE,還是先用3.5.4作標準。
正文:
1、下載:http://www.dcmtk.org
源碼:[url=ftp://dicom.offis.de/pub/dicom/offis/software/dcmtk/dcmtk354/dcmtk-3.5.4.zip]ftp://dicom.offis.de/pub/dicom/offis/software/dcmtk/dcmtk354/dcmtk-3.5.4.zip
支持庫LIB/MT)   ftp://dicom.offis.de/pub/dicom/offis/software/dcmtk/dcmtk354/support/dcmtk-3.5.4-win32-i386-support.zip
支持庫LIB/MD)   ftp://dicom.offis.de/pub/dicom/offis/software/contrib/dcmtk-3.5.4-win32-i386-md-support.zip
2、下載CMAKE最新版本(2.81)
http://www.cmake.org/files/v2.8/cmake-2.8.1-win32-x86.exe 並安裝到隨便啥地方都OK.

3、改支持庫的lib文件的文件名,複製到VCDIR/lib目錄. 我相信絕大部分出現問題的同學可能都沒做這步,所以編譯就出問題了。
     分別把支持庫的xxxx_d.lib改名,下載的支持庫   xxx_d.lib爲DEBUG版本的支持庫,xxx_o.lib爲RELEASE版本支持庫.


     現在要編譯的是DEBUG版本的DCMTK,理所當然用   xxx_d.lib庫.把下載下來的5個支持庫所有帶_d.lib的文件的_d兩字符去掉.把支持庫複製到VC安裝文件夾 $VCDIR$/lib目錄下.

     操作:新建文件夾:O:/dcmtk354/libs    在O:/dcmtk354/dcmtk-3.5.4-win32-i386-MT-support按右鍵,搜索 *_d.lib 圖:
   


    把搜索出來的文件複製到剛剛新建的O:/dcmtk354/libs文件夾:
   


    把所有文件名中的  _d兩字符刪除,目標如下圖
   



     把改名後的所有文件都複製到$VCDIR$/lib文件夾。我的就是C:/Program Files/Microsoft Visual Studio 10.0/VC/lib
     

     

    把支持庫include文件夾裏的所有文件/文件夾複製到   $VCDIR$/include文件夾。操作:
     


     複製搜索到的幾個文件夾到$VCDIR$  直接覆蓋(其實是加入) include  文件夾。我的就是C:/Program Files/Microsoft Visual Studio 10.0/VC/include
     



     把支持庫O:/dcmtk354/dcmtk-3.5.4-win32-i386-MT-support/openssl-0.9.8a/bin文件夾裏的所有文件(就三個啦)複製到   $VCDIR$/bin文件夾.操作,圖略。

     貼圖有點累,錄像方式可能更好。
     在運行CMAKE之前,請確認支持庫的lib/include/bin的內容都複製過一遍了。

4、CMAKE設置:支持選項全部選上,但不需要填寫支持庫所在路徑.爲什麼呢?上面第3點就是爲了解決這個問題的.目的就是把DCMTK那五個支持庫當做VC標準庫了。不信你且在VC中用<>來  #include一個試試看就知道了.比如: #include <png.h>打完這行你再選擇  PNG.H(文件名)再按右鍵,選擇 “打開  png.h  文件” 菜單.你會驚奇的發現,libpng庫的png.h頭文件被IDE編輯器打開了,太神奇了是吧?理解C++的一些概念還是很重要的啦。扯遠了,回到CMAKE的問題上來,注意了,用CMAKE打開DCMTK後,默認的編譯開關全部是/MD,因爲我們編譯的軟件是用/MT開關,所以現在要把所有的  /MD改成/MT  把/MDd改成/MTd   再囉嗦一下,CMAKE裏所有這些開關都要改. 最後再點configue,再點generate.
     還是具體點吧,操作步驟:
     打開CMAKE,Where is the source code: O:/dcmtk354/dcmtk-3.5.4          where to build the  binaries    O:/dcmtk354/dcmtk-3.5.4
  



    點CONFIGURE,



我的VC10就選10了,你的是什麼版本自己選吧,Finish



把所有支持庫都選上!
選ADVANCED VIEW,我們要編譯/MT選項的工程,所以把所有默認的/MD都改成/MT,MDd改成/MTd


點configure


點generate



大功告成。

5、用VC IDE打開   O:/dcmtk354/dcmtk-3.5.4/dcmtk.sln,在IDE中選批量編譯,只選ALL BUILD  [DEBUG]  其他所有都不選--->編譯。
     最後你會驚喜地發現,編譯62個成功,0個失敗。太神奇了?如果你有這樣的感受的話,還是複習下VC相關概念吧。具體操作:
     打開DCMTK.SLN的界面:
     


     菜單  Build->Batch build
      




      點Build按鈕開始編譯。。。。。。。。。。。耐心等待。。。。。。。。。。結果。。。。。。
      
最後應該是:
      Time Elapsed 00:00:01.07
========== Build: 63 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========





編譯沒問題了,再選Build->Batch build,這次只選  INSTALL的debug版本,如圖



Build 結果:(  有錯誤?!
  CMake Error at dcmnet/apps/cmake_install.cmake:31 (FILE):
    file INSTALL cannot find "//dcmtkeay.dll".
  Call Stack (most recent call first):
    dcmnet/cmake_install.cmake:33 (INCLUDE)
    cmake_install.cmake:44 (INCLUDE)
  
  
C:/Program Files/MSBuild/Microsoft.Cpp/v4.0/Microsoft.CppCommon.targets(113,5): error MSB3073: The command "C:/CMake/bin/cmake.exe -DBUILD_TYPE=Debug -P cmake_install.cmake
C:/Program Files/MSBuild/Microsoft.Cpp/v4.0/Microsoft.CppCommon.targets(113,5): error MSB3073: :VCEnd" exited with code 1.
Build FAILED.
Time Elapsed 00:00:05.85
========== Build: 0 succeeded, 1 failed, 63 up-to-date, 0 skipped ==========

編譯器找不到dcmtkeay.dll文件,用記事本打開 O:/dcmtk354/dcmtk-3.5.4/dcmnet/apps/cmake_install.cmake  文件,爲dcmtkeay.dll指定絕對路徑:
把  "/dcmtkeay.dll" 改成"C:/Program Files/Microsoft Visual Studio 10.0/VC/bin/dcmtkeay.dll"
把 "dcmtkssl.dll"   改成  "c:/Program Files/Microsoft Visual Studio 10.0/VC/bin/dcmtkssl.dll"


保存cmake_install.cmake 文件。
再重新編譯  INSTALL工程。



結果:FinalizeBuildStatus:
  Deleting file "Debug/INSTALL.unsuccessfulbuild".
  Touching "Debug/INSTALL.lastbuildstate".

Build succeeded.
Time Elapsed 00:00:19.31
========== Build: 2 succeeded, 0 failed, 62 up-to-date, 0 skipped ==========


所有編譯完成,無任何錯誤了。打開O:/dcmtk354/dcmtk-3.5.4-win32-i386那一堆文件就是你夢寐以求的DCMTK了。


6、留給你最後的一個問題:怎樣編譯 RELEASE版本的DCMTK_LIB?嘿嘿……如果你理解了我這篇文章的意圖的話,其實是很簡單的。

處女貼,真不容易呀!有問題?請到羣(39266235)裏發言。

總結與建議:
1、道理其實很簡單:參考下LINUX的作風,安裝軟件後,軟件必須的  bin/lib/include 這些東西都安裝到系統對應的位置,成爲系統的一部分了。本文複製支持庫的文件到VC安裝目錄也一樣的目的,就讓支持庫都成爲系統的一部分吧。
2、建議遇到問題的時候多google(鄙視google對抗中國政府的做法?滾蛋吧,不過也感謝它曾經爲中國網民提供最優秀的搜索服務),baidu(同樣
鄙視,明明是在美國註冊的公司,打什麼中國民營企業的幌子呀?!)一下。還沒答案咋辦?問問你的腦細胞,再不行,加幾個QQ羣玩玩吧。
3、建議有志於程序設計方面的同學呀,一定要把英語學好,中國的軟件爲什麼老慢半拍而且缺乏世界級的軟件?原因很簡單,工具是人家的生產的
,人家的文檔用英文寫的,假如英文不精,理解也就停留在一知半解的水平了,寫出來的東西,當然是一樣的一知半解。發揚中華文化的同時,一定要把英文學好這也是我寫這篇文章的原因之一。
注:圖片如果看不清,請先另存爲再看吧。
寫文章真的很累,一個下午的時間,才寫這麼點呀,而且文字本來在寫在本人的QQ空間裏,只加了點圖片,鬱悶死了

發佈了71 篇原創文章 · 獲贊 0 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章