环境WIN7 + VisualStudio2010 + dcmtk3.6.0 + Cmake2.8.6

准备工作

从dcmtk官方网站下载源代码及支持库文件。分别名为:dcmtk-3.6.0 dcmtk-3.6.0-win32-i386-support_MT.(注意,要下载***support的压缩文件,而不要下载上面单独列出来的支持库)。将这些压缩文件解压缩到硬盘上一个单独的文件夹里,我的解压缩目录是D:\DCMTK\。

从cmake官方网站下载cmake的安装文件,我下载的是最新的2.8.6版。将其安装到计算机任意目录下。

正文

1. 将支持库中的相应lib文件,include文件,bin文件拷贝到VS2010安装目录的相应文件夹下。

A. 在解压得到的支持库的文件夹下搜索_d.lib文件(_d代表debug版本),应该会得到7个结果,将这些文件复制到一个单独的文件夹下,并把它们的名字中的_d去掉,例如将zlib_d.lib重命名为zlib.lib。将重命名后的文件拷贝至VS2010安装目录下的lib文件夹下,在我的电脑上是D:\Program Files\Microsoft Visual Studio 10.0\VC\lib\。

B. 在解压得到的支持库的文件夹下搜索include,应该得到5个文件夹,将这些文件夹复制到D:\Program Files\Microsoft Visual Studio 10.0\VC\下,选择合并文件夹(也就是将include文件夹下的内容全部复制到D:\Program Files\Microsoft Visual Studio 10.0\VC\include\目录下)

C. 将D:\DCMTK\dcmtk-3.6.0-win32-i386-support_MT\openssl-1.0.0c\bin下的三个文件复制到D:\Program Files\Microsoft Visual Studio 10.0\VC\bin\下。

2. CMAKE编译

A. 打开安装好的CMAKE。关闭所有跟VS有关的程序。在where is the source code里,选择你的dcmtk源代码的位置,我的源代码位置是D:\DCMTK\dcmtk-3.6.0。在where to build the binaries下选择你想存放build结果的文件夹,我新建了一个D:\DCMTK\dcmtk-bin 的文件夹。

B. 点击Configure,选择编译环境。我的电脑上装的VS2010,因此我选择的Visual Studio2010。点击finish。等待configure完成。这中间会出现***not found的信息,忽略它们。

C. 这时候CMAKE会列出所有的支持库的名字,勾选上openssl,png,tiff,xml和zlib,其他的保持默认。

D. 勾选上Advanced复选框,这是下面的内容变多了。将所有的/MD改成/MT,/MDd改成/MTd。CMAKE_INSTALL_PREFIX下会有安装路径,自选,不要选择带有中文的目录。

E. 再次点击Configure。这回Configure很快,之后点击Generate。

3. VS2010编译

这时在D:\DCMTK\dcmtk-bin下会多出来很多文件夹和文件。用VS2010打开其中的sln文件。在一个solution下会有很多个project。

A. 点击Build->Batch Build,选择ALL_BUILD的debug版,点击右边的Build。耐心等待。会有很多个warning,应该是由字符编码不统一引起的。最后会看到78个编译 成功,0个失败。

B. 之后,再选择Build->Batch Build,这次选择INSTALL的debug版本,点击右边的Build。最后会显示3个工程编译成功,这时在你选择的安装目录下(默认是C:\Program Files\DCMTK)就会有lib,bin,include,etc,share文件夹,里面就是之后写程序做医学图像处理所需要的库文件了!

4. 一个小例程,进行简单的测试

源代码:

#include <dcmtk\config\osconfig.h>

#include <dcmtk\dcmdata\dctk.h>

int main(void)

{

DcmFileFormat fileformat;

OFCondition oc = fileformat.loadFile("D:\\021A3C1C.dcm");

if(oc.good()){

OFString patientName;

if(fileformat.getDataset()->findAndGetOFString(DCM_PatientName, patientName).good())

{

std::cout<<"Patient Name:"<<patientName<<std::endl;

}

}

return 0;

}

A. 将021A3C1C.dcm文件放在D盘根目录下。

B. 新建一个empty win32 console application,在source文件夹下新建一个cpp文件,把以上源代码复制粘贴进去。

C. 右键单击工程名,选择属性(properties),在Configuration Properties->C/C++->General下,Additional Include Directories里加入上一步编译出来的include文件夹,我的电脑上是D:\Program Files\DCMTK\include,这一步是为了让程序能够找到头文件。

D. C/C++->code generation里,Runtime Library 选择/MTd,这一步是要和之前CMAKE的编译选项一致。

E. Linker->General里,Additional Library Directories里填写上一步编译出来的lib文件夹,我的电脑上是D:\Program Files\DCMTK\lib,这一步是为了让程序能够找到之前编译好的lib文件。

F. Linker->Input里,在Additional Dependencies 里依次加上wsock32.lib;netapi32.lib;ofstd.lib;oflog.lib;dcmdata.lib;zlib.lib;这一步是加入具体我们程序需要的lib文件。网上很多的帖子中,都没有提到oflog.lib这个文件,可能是由于旧的版本中并没有使用到这个文件。但是对于3.6.0版,这个lib文件是必需的。

G. Apply ,ok,编译工程,运行,命令行应该输出Patient Name:CHAI YI DONG。

Happy dcmtking!

DCMTK3.6.0 (MT支持库)安装 完整说明的更多相关文章

  1. DCMTK3.6.0(MD支持库)安装说明

    一.运行环境:WIN7 32bit + VisualStudio2008 + dcmtk3.6.0 + Cmake2.8.8 或者 WIN7 64bit 二.准备工作: 1)MD/MT的知识储备: / ...

  2. DCMTK3.6.1(MD支持库)安装说明

    转载:http://qimo601.iteye.com/blog/1685135 [前言] 最近,因为需要开发DICOM网管模块,必须使用DCMTK的DcmNet模块.但是DCMTK3.6.0在Dcm ...

  3. VS2015编译Qt5.7.0生成支持XP的静态库(很不错)

    一.编译工具 1.VS2015 编译Qt5.7.0的所需VS版本:Visual Studio 2013 (Update1)或Visual Studio 2015 (Update2).因为Update补 ...

  4. Linux下安装PHP的GD支持库

    Linux下安装PHP的GD支持库   1.安装 zlib  wget ftp://ftp.sunfreeware.com/pub/freeware/SOURCES/zlib-1.2.3.tar.gz ...

  5. linux中必备常用支持库的安装(CentOS)

    在CentOS安装软件的时候,可能缺少一部分支持库,而报错.这里首先安装系统常用的支持库.那么在安装的时候就会减少很多的错误的出现 yum install -y gcc gdb strace gcc- ...

  6. centos7.6环境zabbix3.2源码编译安装版升级到zabbix4.0长期支持版

    zabbix3.2源码编译安装版升级到zabbix4.0长期支持版 项目需求: .2版本不再支持,想升级成4.0的长期支持版 环境介绍: zabbix服务端是编译安装的,数据库和web在一台机器上 整 ...

  7. 用c++ 给易语言写支持库学习记录

    废话我就不对说 直接开始 易语言官方下载的易语言安装路径下 有一个SDK文件夹 我们点进入cpp文件夹里面提供是c++的SDK elib文件夹里就是sdk 我们新建一个win32项目 这里我用的是VS ...

  8. phpize 扩展GD库 安装 ! 环境--centos 7 +nginx 1.7.11+php 5.6.7

    使用phpize编译GD库安装,先安装前置库libjpeg libpng zlib  freetype等 都是下面php编译的几个选项 先看php编译的选项: --with-gd=DIR       ...

  9. CentOS 6.0最小化编译安装Nginx+MySQL+PHP+Zend

    http://www.osyunwei.com/archives/235.html 引言: 操作系统:CentOS 6.0 32位         下载地址:http://mirrors.163.co ...

随机推荐

  1. 每天一个linux命令(53):wget命令

    Linux系统中的wget是一个下载文件的工具,它用在命令行下.对于Linux用户是必不可少的工具,我们经常要下载一些软件或从远程服务器恢复备份到本地服务器.wget支持HTTP,HTTPS和FTP协 ...

  2. JS子父窗口互相取值赋值详解介绍

    子窗口赋值到父窗口 代码如下 复制代码 <script>function openWin(str) {    window.open(siteurl+"popup/"+ ...

  3. OC基础--构造方法

    OC语言中类的构造方法学了两种: 一.方法一:[类名 new] 例:[Person new] 缺点:可扩展性不强,假如在Person类中有_age 成员变量,在初始化时想让_age 中的值为20,ne ...

  4. Java基础-内部类

    在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类.广泛意义上的内部类一般来说包括这四种:成员内部类.局部内部类.匿名内部类和静态内部类. 下面就先来了解一下这四种内部类 ...

  5. Oracle定时执行存储过程

    首先查看 SQL> show parameter job NAME                                 TYPE        VALUE-------------- ...

  6. Erlang练习题----shopping

    直接就上代码了: -module(shop). -export([cost/1,total/1]). cost(orange) -> 5; cost(newspaper) -> 8; co ...

  7. [IOS UIalert模版]

    1.alertview创建 UIAlertView *alert; alert = [[UIAlertView alloc] initWithTitle:@"提示" message ...

  8. 内部类访问局部变量的时候,为什么变量必须加上final修饰

    这里的局部变量就是在类方法中的变量,能访问方法中变量的类当然也是局部内部类了.我们都知道,局部变量在所处的函数执行完之后就释放了,但是内部类对象如果还有引用指向的话它是还存在的.例如下面的代码: cl ...

  9. 求DAG上两点的最短距离

    Problem 给出一个不带边权(即边权为1)的有向无环图(unweighted DAG)以及DAG上两点s, t,求s到t的最短距离,如果无法从s走到t,则输出-1. Solution DFS,BF ...

  10. MyEclipse------File类的各种方法

    usingFile.jsp <%@ page language="java" import="java.util.*" pageEncoding=&quo ...