不知道为啥ItEye只能显示日志文字的部分内容,本篇日志完整版,可以看我的最新博客地址:
网易博客地址: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。将其安装到计算机任意目录下。
④dcmtk-3.6.0-html-help.zip,dcmtk html版本帮助文档,CHM版本暂时还未出。
三、安装过程
1. 将支持库中的相应lib文件,include文件,bin文件拷贝到VS2008安装目录的相应文件夹下。
A.在解压得到的支持库的文件夹下搜索_d.lib文件(xxx_d.lib为DEBUG版本的支持库,xxx_o.lib为RELEASE版本支持库),应该会得到7个结果,将这些文件复制到一个单独的文件夹下,并把它们的名字中的_d去掉,例如将zlib_d.lib重命名为zlib.lib。将重命名后的文件拷贝至VS2008安装目录下的lib文件夹下,在我的win7 32bit电脑上是C:\Program Files\Microsoft Visual Studio 9.0\VC\lib\。(win7 64bit操作系统是C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\lib\)
B. 在解压得到的支持库的文件夹下搜索include,应该得到5个文件夹,将这些文件夹复制到C:\Program Files\Microsoft Visual Studio 9.0\VC\下,选择合并文件夹,也就是将include文件夹下的内容全部复制到C:\Program Files\Microsoft Visual Studio 9.0\VC\include\目录下。(win7 64bit操作系统是C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\ include\)
C.将D:\DCMTK\dcmtk-3.6.0-win32-i386-support_MD\openssl-1.0.0c\bin下的五个文件复制到C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\下。(win7 64bit操作系统是C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\ bin\)
2. CMAKE编译
A. 修改DCMTK源码的CMake配置属性,CMake将要把DCMTK源码生成VS2008项目:
打开D:\DCMTK\dcmtk-3.6.0\dcmtk-3.6.0\CMakeLists.txt
1、 将/MT修改成/MD, /MTd修改成/MDd(因为我是Visual Studio 9 2008,所以只修改绿色的地方,为了安全和方便,你可以把CMakeLists.txt里面的/MT、 /MTd都替换成/MD、 /MDd)
2、 修改DCMTK支持库的开关属性。将前面五个支持项(DCMTK_WITH_TIFF、DCMTK_WITH_PNG、DCMTK_WITH_XML、DCMTK_WITH_ZLIB、DCMTK_WITH_OPENSSL)的开关都设置成ON。
小注:实际上面两步骤本来是在CMake程序界面上直接可以修改的,奈何CMake对DCMTK3.6.0支持的并不是很好,界面改了CMake属性,生成的VS项目实际并没有改,你可以自己查看后面D:\DCMTK\dcmtk-bin里的VS项目dcmDump的项目属性-〉C/C++-〉Code Generation,里面仍然会是MTd,这样就导致后面建立Qt的MDd项目小例子,编译总是出错。于是只好手动修改CMakeLists.txt了,其实并不影响生成VC项目,反而更方便。这是影响我问题的关键,我是在DCMTK官方论坛里看到的解决方法。 FAQ #26: Compilation of DCMTK-based program fails w/ LNK2005,请注意最后一段的Note。
B. 打开安装好的CMAKE-gui程序。关闭所有跟VS有关的程序。在where is the source code里,选择你的dcmtk源代码的位置,我的源代码位置是D:\DCMTK\dcmtk-3.6.0\ dcmtk-3.6.0。在where to build the binaries下选择你想存放build结果的文件夹,我新建了一个D:\DCMTK\dcmtk-bin 的文件夹。
C. 点击Configure,选择编译环境。我的win7 32bit电脑上装的VS2008,因此我选择的Visual Studio 9 2008,(win7 64bit也选择这个Visual Studio 9 2008,不用选择VS2008 64bit,否则出错)点击finish。等待configure完成。这中间会出现***not found的信息,忽略它们。
D. 之后点击Generate。这时候CMake使命也就完成了,可以关闭了。
3. VS2008编译
这时在D:\DCMTK\dcmtk-bin下会多出来很多文件夹和文件。用VS2008打开其中的sln文件。在一个solution下会有很多个project。
A. 点击Build->Batch Build,选择ALL_BUILD的debug版,点击右边的Build。耐心等待。会有很多个warning,应该是由字符编码不统一引起的。最后会看到76个编译 成功,0个失败。
B. 之后,再选择Build->Batch Build,这次选择INSTALL的debug版本,点击右边的Build。最后会显示1个工程编译成功,这时在你选择的安装目录下(默认是C:\Program Files\DCMTK)就会有lib,bin,include,etc,share文件夹,里面就是之后写程序做医学图像处理所需要的库文件了!
四、测试例子
#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 。
附件上有一个DICOM的图像 111.dcm
分享到:
相关推荐
这个“dcmtk-3.6.0-win32-i386-support_MD”版本是针对Windows 32位平台的DCMTK支持库,包含了MD(Medical Device)相关的支持。 DICOM是医疗领域广泛采用的数据交换、存储和通信的标准,它定义了如何在不同设备...
在描述中提到的"dcmtk-3.6.0版本编译出的动态库文件,包含Debug和Release版本",意味着你将获得一套完整的DCMTK库,无论是在开发阶段还是最终发布的产品中,都能找到对应版本的库文件进行链接。 压缩包内的文件名称...
6. **编译与配置**:DCMTK 3.6.0的编译过程涉及设置环境变量、配置选项,以及链接依赖库。开发者需要熟悉CMake等构建工具来完成编译和安装。 7. **安全与隐私**:由于涉及到患者信息,使用DCMTK时必须遵循HIPAA...
配置DCMTK3.6.0库在VS2012中是一项技术性较强的任务,涉及到CMake的使用、编译选项的设定、环境变量的配置等多个步骤。成功配置后,你可以利用DCMTK的强大功能处理和交换DICOM格式的医学图像数据,从而开发出符合...
标题中的“dcmtk-3.6.5-win64-support-MD-iconv-msvc-15.8.zip”表明这是DCMTK的3.6.5版本,针对Windows 64位操作系统优化,且集成了MD(Multi-threaded DLL)模式下的iconv库,用于字符集转换,并且是用Microsoft ...
DCMTK(DICOM ToolKit)是一个开源软件库,专门用于开发与DICOM(Digital Imaging and Communications in Medicine)标准相兼容的应用程序和组件。DICOM是医疗领域广泛使用的标准,用于存储、传输和处理医学影像数据...
包括dcmtk-3.6.0、dcmtk-3.6.0-win32-i386-support_MD和dcmtk-3.6.0-html-help(英文版),同时,附带cmake-3.2.2-win32-x86。 在win7旗舰版32位+VS2005下亲测编译通过,没有问题。
Dcmtk3.6.0, 如果从头开始理解DICOM的协议,然后完全自己编写这些代码来实现这些协议,是一件工程浩大的事情。德国offis公司开发的DCMTK,为我们提供了实现DICOM协议的一个平台,使得我们可以在它的基础上轻松的完成...
做了一个DCMTK 3.6.0版本的CHM帮助文件,拿上来共享一下;有些粗糙,大家不要介意。
* dcmtk-3.6.0-win32-i386-support_MT 将这些文件解压缩到硬盘上一个单独的文件夹下,例如 D:\DCMTK\。 CMAKE 编译 1. 将支持库中的相应 lib 文件、include 文件、bin 文件拷贝到 VS2010 安装目录的相应文件夹下...
总结,DCMTK-3.6.0在Linux系统下为开发者提供了强大的DICOM支持,无论是开发医疗图像处理应用,还是构建医疗信息系统,都能从中受益。通过理解和利用其核心组件、构建过程以及提供的各种资源,用户能够高效地实现...
DCMTK3.6.2+VS2015(MD支持版)编译和安装示范,本文的编译机器是Windows10 64位系统,使用VS2015和cmake3.7.2编译DCMTK源码为64位包(运行时库为MD或MDd)。
标题中的“dcmtk-3.5.4-win32-i386 /MD for vc6”表明这是一个针对Windows 32位平台的DCMTK版本,构建时使用了/MD编译标志,这是Visual Studio 6.0中的一个选项,用于链接多线程DLL版本的C运行时库。这使得生成的库...
标题中的"dcmtk-3.5.4-win32-i386-support.zip"表明这是一个针对32位Windows系统的DCMTK 3.5.4版本的压缩包,包含了支持库和相关工具。描述提到它是“很不错的转换DICOM文件工具”,意味着它可以用于 DICOM 数据的...
在“dcmtk-3.6.0-html-help”中,你将找到以下内容: 1. **API参考**:每个函数、类和方法的详细描述,包括参数、返回值、用法示例等,帮助开发者理解和使用DCMTK API。 2. **用户指南**:介绍如何配置、编译以及在...
DCMTK 3.6.1是该工具包的一个稳定版本,包含了用于创建、读取、修改和传输DICOM数据的库和实用程序。 在描述中提到的"Release版本的动态库文件",意味着这些库文件已经过优化,适用于生产环境。与Debug版本相比,...
在“dcmtk-3.6.5-win64-dynamic”压缩包中,可能包含了动态链接库文件(.dll)、可执行文件(.exe)以及可能的文档和示例代码。用户只需解压后,根据需求选择相应的工具进行使用,无需复杂的配置和编译过程,极大地...
dcmtk-3.6.0帮助文档chm版
4. **dcmtk-3.6.5-win64-support-MD-iconv-msvc-15.8**: 这个目录可能包含的是针对Windows 64位系统,使用多线程DLL(MD)编译模式,并且集成了iconv字符集转换库的特定支持文件。iconv是用于处理不同字符编码转换的...