DCMTK3.6.0(MD支持库)安装说明-无图版
?
为了让大家能耐心看完,特意减去了图片。
详细图文并茂步骤可以参看这篇文章?DCMTK3.6.0(MD支持库)安装说明
?
?
一、运行环境:WIN7 32bit + VisualStudio2008 + dcmtk3.6.0 + Cmake2.8.8
或者?WIN7 64bit
二、准备工作:
1)MD/MT的知识储备:
/MT和/MTd表示采用多线程CRT库的静态lib版本。该选项会在编译时将运行时库以静态lib的形式完全嵌入。该选项生成的可执行文件运行时不需要运行时库dll的参加,会获得轻微的性能提升,但最终生成的二进制代码因链入庞大的运行时库实现而变得非常臃肿。当某项目以静态链接库的形式嵌入到多个项目,则可能造成运行时库的内存管理有多份,最终将导致致命的“Invalid Address specified to RtlValidateHeap”问题。另外托管C++和CLI中不再支持/MT和/MTd选项。
/MD和/MDd表示采用多线程CRT库的动态dll版本,会使应用程序使用运行时库特定版本的多线程DLL。链接时将按照传统VC链接dll的方式将运行时库MSVCRxx.DLL的导入库MSVCRT.lib链接,在运行时要求安装了相应版本的VC运行时库可再发行组件包(当然把这些运行时库dll放在应用程序目录下也是可以的)。 因/MD和/MDd方式不会将运行时库链接到可执行文件内部,可有效减少可执行文件尺寸。当多项目以MD方式运作时,其内部会采用同一个堆,内存管理将被简化,跨模块内存管理问题也能得到缓解。
结论:/MD和/MDd将是潮流所趋,/ML和/MLd方式请及时放弃,/MT和/MTd在非必要时最好也不要采用了。
2)下载软件:
①dcmtk-3.6.0 .zip;?
②dcmtk-3.6.0-win32-i386-support_MD.zip(注意,要下载***support_MD的压缩文件,而不要下载上面单独列出来的支持库)。我选择的MD,因为我的软件项目都是基于MD的运行时库。(您也可以选择dcmtk-3.6.0-win32-i386-support_MT.zip,如果您的项目是基于MT。通过项目属性的C/C++->code generation 可以更改运行时库)将这些压缩文件解压缩到硬盘上一个单独的文件夹里,我的解压缩目录是D:\DCMTK\。
③从cmake官方网站下载cmake的安装文件,我下载的是cmake-2.8.8-win32-x86.exe。将其安装到计算机任意目录下。
?
#include "testa.h"#include <QtGui/QApplication>#include <QDebug>#include "dcmtk/config/osconfig.h"#include "dcmtk/dcmdata/dctk.h"int main(int argc, char *argv[]){QApplication a(argc, argv);TestA w;w.show();DcmFileFormat fileformat;OFCondition oc = fileformat.loadFile("111.dcm");if(oc.good()){OFString patientName;if(fileformat.getDataset()->findAndGetOFString(DCM_PatientName, patientName).good()){qDebug()<<"Patient Name:"<<patientName.data();}}return a.exec();}?
? ? ? ?1、配置项目属性
?A.新建一个Qt application,把以上源代码复制粘贴进main.cpp去。B.右键单击工程名,选择属性(properties),在Configuration Properties->C/C++->General下,Additional Include Directories里加入上一步编译出来的include文件夹,我的Win7 32bit电脑上是C:\Program Files\DCMTK\include,这一步是为了让程序能够找到头文件。(Win7 64bit 路径是:C:\Program Files (x86)\ DCMTK\include)C.C/C++->code generation里,Runtime Library 选择/MDd,这一步是要和之前CMAKE的编译选项一致。(我的Qt项目默认就是/MDd)D.Linker->General里,Additional Library Directories里填写上一步编译出来的lib文件夹,我的Win7 32bit电脑上是C:\Program Files\DCMTK\lib,这一步是为了让程序能够找到之前编译好的lib文件。(Win7 64bit 路径是:C:\Program Files (x86)\ DCMTK\lib)E.Linker->Input里,在Additional Dependencies 里依次加上wsock32.lib;netapi32.lib;ofstd.lib;oflog.lib;dcmdata.lib;zlib.lib;这一步是加入具体我们程序需要的lib文件。网上很多的帖子中,都没有提到oflog.lib这个文件,可能是由于旧的版本中并没有使用到这个文件。但是对于3.6.0版,这个lib文件是必需的。我们例子中只需要如上几个Lib,如果还需要其他dcmtk 的lib,请遵守以下引入顺序。F.Apply ,ok,编译工程,运行,命令行应该输出Patient Name:he ying hou 。
?