【前言】 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服务器。
源代码以下: