• VS 2005中编译DCMTK工具包


     

    VS 2005中编译DCMTK工具包

    分类: 医学图像处理 274人阅读 评论(0) 收藏 举报

    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准备文件夹

    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文件更换掉。


  • 相关阅读:
    Codeforces Round #174 (Div. 1 + Div. 2)
    Codeforces Round #176 (Div. 1 + Div. 2)
    [ARC101C] Ribbons on Tree 解题报告
    [CTS2019]珍珠 解题报告
    CF1349D Slime and Biscuits 解题报告
    [PKUWC2018]猎人杀 解题报告
    AGC047 解题报告
    肯德基 解题报告
    [GXOI/GZOI2019]旧词 解题报告
    [ARC084B] Small Multiple 解题报告
  • 原文地址:https://www.cnblogs.com/moonvan/p/2173445.html
Copyright © 2020-2023  润新知