VS 2005中编译DCMTK工具包

来源:互联网 发布:失落的奥德赛 知乎 编辑:程序博客网 时间:2024/06/05 20:51

DCMTK的编译

DCMTK 是一个开放程序代码的 DICOM Toolkit,它提供读取 DICOM 影像及进行传输通讯的函数库,是目前最广为应用的处理DICOM影像的工具包。

DCMTK提供的一系列的源码,要使用该工具包则需要对其进行编译,得到我们需要的库文件.lib,然后再和头文件一起加入到我们的工程中进行使用。

在程序中使用编译的函数库,主要是要把.h.lib文件加入到工程中。对于源码来说.h文件都相同,而.lib文件一般来说会有debug版本和release版本,不同的版本只是在对源码进行编译时,选择的编译模式不同,因此以debug版本为例说明在VS 2005DCMTK的编译方法。

1准备工作

首先是要下载编译的源文件和工具。DCMTK下载地址为:http://www.dcmtk.org/dcmtk.php.enDCMTK最新版本为3.5.5,我们下载的版本为3.5.4即下载文件dcmtk-3.5.4.zip;其次下载支持工具包,支持工具包有两种格式,MTMD版本,我们下载默认版本MT版本,文件名:dcmtk-3.5.4-win32-i386-support.zip。最后下载编译工具Cmake,下载地址为:http://www.cmake.org/cmake/resources/software.html下载版本为2.8.1的文件即:cmake-2.8.1win32-x86.zip;我使用的是2.6.0版本的。

在任意盘,如C盘,新建文件夹DCMTK,将下载文件均放到该文件夹并解压到当前文件夹;然后新建三个文件夹分别叫binlibsurport。把支持库的文件夹都移到surport中,而binlib用来放编译结果。如图1所示:

 

1准备文件夹

2 VS2005安装目录中添加支持库文件

surport文件夹中搜所include,将搜索结果如图2所示。

 

图2 搜索结果

将搜索到的所有文件全部复制到vs2005VC目录中,如我的路径为D:/Program Files/Microsoft Visual Studio 8/VC;在弹出的文件替换确认对话框中选择全部,最后将xinclude.移到D:/Program Files/Microsoft Visual Studio 8/VC/include中。

同样搜索*_d.lib文件,将其添加到D:/Program Files/Microsoft Visual Studio 8/VC/lib文件夹中,文件名中去掉_d(若编译release版本,则搜索*_o.lib文件,复制到D:/Program Files/Microsoft Visual Studio 8/VC/lib文件夹,再去除_o)。

最后接着搜索bin ,将搜索结果放到D:/Program Files/Microsoft Visual Studio 8/VC/bin

此过程将DCMTK的支持库文件的debug版本转换VS 2005的内在库。

3 CMAKE工具的使用

1)更改编译标志:打开C:/DCMTK/cmake-2.6.0-win32-x86/bin中的cmake-gui.exe程序,设定编译的源代码路径和输出路径,在此都选择C:/DCMTK/dcmtk-3.5;勾选show advance entries,然后将编译的开关设置为MT,默认的为MD,结果如图3所示

 

图3更改编译标志

注:MTMD是决定库文件的引用方法,在VS2005MFC程序中,项目->属性>配置属性->常规中,MFC的使用项中选择共享的DLL中使用MFC时才选择MD,其他两种情况选择MT。在使用Cmake是一定要保证:C:/DCMTK/dcmtk-3.5.4文件夹中的CMakeLists.txt中,CMAKE程序的编译开关,VS 2005中项目程序中的MTMD标志一致。

2)勾选全部支持库,并且找到EXECUTABLE_OUTPUT_PATHLIBRARY_OUTPUT_PATH分别设为C:/DCMTK/binC:/DCMTK/lib,这样最后编译出来的.lib文件和exe文件就在这两个文件夹中,如图4所示。

      

图4勾选支持库和设置输出目录

3)点击Configure,选择当前编译器。然后点击Genarate,生成DCMTK的项目文件。此时会出现红色警告。让你在某个目录下的Cmakelist.txt文件中的 ADD_EXECUTABLE(${PROGRAM} ${PROGRAM})行前添加:

if(COMMAND cmake_policy)

      cmake_policy(SET CMP0003 NEW)

    endif(COMMAND cmake_policy)

这是由于DCMTK3.5.4是对Cmake2.4版本的使用,使用高于2.6.0的Cmake进行编译金辉出现此警告,在其弹出的指定文件夹中的cmakelist文件中相应的位置,添加要求添加的语句即可。 

 

4 VS 2005中进行编译

1) 编译ALL_BUILD:进入 C:/DCMTK/dcmtk-3.5.4 目录,双击 dcmtk.sln文件,在打开的项目中, 从主选单中选 "生成" - "批生成",在弹出的对话盒中勾选 "ALL_BUILD" DEBUG方案,并按下 "生成"。编译结果为62个成功,0个失败。

2)编译 INSTALL:主选单中选 "生成" - "批生成",在弹出的对话盒中勾选 " INSTALL " DEBUG方案,并按下 "生成",结果显示错误:

 CMake Error at dcmnet/apps/cmake_install.cmake:31 (FILE):
    file INSTALL cannot find "//dcmtkeay.dll".

这是因为编译器找不到dcmtkeay.dll文件,用记事本打开 C:/DCMTK/dcmtk-3.5.4/dcmnet/apps/cmake_install.cmake  文件,为dcmtkeay.dll,指定绝对路径:
  "/dcmtkeay.dll" 改成"D:/Program Files/Microsoft Visual Studio 8/VC/bin/dcmtkeay.dll"
"dcmtkssl.dll"  改成  "D:/Program Files/Microsoft Visual Studio 8/VC/bin/dcmtkssl.dll"
      
然后按上述步骤再重新编译,结果应该是63个成功。此时在binlib文件夹中就可以看到编译生成的exe文件和lib文件。

5 VS 2005中使用DCMTK

主要介绍DEBUG版本的DCMTK库在VS 2005中的应用。DCMTK的支持库已经加入VS 2005的内置库中,现在只需要添加DCMTK的库即可。

1)头文件飞安放:如同支持库文件的添加方法一样,在C:/DCMTK/dcmtk-3.5.4中搜索Include然后将搜索结果放入到VS 2005VC目录下Include中。

2)库文件的安放:新建一个MFC工程,再将C:/DCMTK/lib文件夹中放大.lib文件放入工程文件夹中,然后在stdafx.h中添加如下代码:

#pragma comment(lib,"netapi32.lib")

              #pragma comment(lib,"wsock32.lib")

              #pragma comment(lib,"ofstd.lib")

              #pragma comment(lib,"dcmdata.lib")

              #pragma comment(lib,"dcmimgle.lib")

              #pragma comment(lib,"dcmimage.lib")

              #pragma comment(lib,"ijg8.lib")

              #pragma comment(lib,"ijg12.lib")

              #pragma comment(lib,"ijg16.lib")

              #pragma comment(lib,"dcmjpeg.lib")

              #pragma comment(lib,"dcmnet.lib")

              #pragma comment(lib,"dcmdsig.lib")

              #pragma comment(lib,"dcmsr.lib")

              #pragma comment(lib,"dcmtls.lib")

              #pragma comment(lib,"dcmpstat.lib")

              #pragma comment(lib,"dcmwlm.lib")

 

              #pragma comment(lib,"dcmqrdb.lib")

              #pragma comment(lib,"dcmtkeay.lib")

              #pragma comment(lib,"dcmtkssl.lib")

              #pragma comment(lib,"iconv.lib")

              #pragma comment(lib,"libtiff.lib")

              #pragma comment(lib,"libpng.lib")

              #pragma comment(lib,"libxml2.lib")

       #pragma comment(lib,"zlib.lib")    

这样就可以在工程中使用DCMTK了,如果要改为release版本,则需要将DCMTK的支持库、库文件的.lib文件更换掉。

 

 

原创粉丝点击