Win10+VS2010上安装DCMTK3.6.3(MD支持库)安装说明

一、运行环境:WIN10 64bit + VisualStudio2010 + dcmtk3.6.3 + Cmake3.3.2

二、下载软件:
从DCMTK官网下载源代码:http://www.dcmtk.org/dcmtk.php.en
           ①dcmtk-3.6.3 .tar.gz;

        dcmtk-3.6.3-win64-support_MD-msvc-12.0.zip(注意,要下载***support_MD的压缩文件,而不要下载上面单独列出来的支持库)。我选择的MD,因为我的软件项目都是基于MD的运行时库。(您也可以选择dcmtk-3.6.0-win32-i386-support_MT.zip,如果您的项目是基于MT。通过项目属性的C/C++->code generation 可以更改运行时库)将这些压缩文件解压缩到硬盘上一个单独的文件夹里,我的解压缩目录是C:\DCMTK\

Win10+VS2010上安装DCMTK3.6.3(MD支持库)安装说明
Win10+VS2010上安装DCMTK3.6.3(MD支持库)安装说明
三、安装过程:
1.将支持库中的相应(lib文件,include文件,bin文件)拷贝到VS2010安装目录的相应文件夹下。
A.在解压得到的支持库dcmtk-3.6.3-win64-support_MD-msvc-12.0)的文件夹下搜索_d.lib文件(xxx_d.lib为DEBUG版本的支持库,xxx_o.lib为RELEASE版本支持库),应该会得到9个结果,将这些文件复制到一个单独的文件夹下,并把它们的名字中的_d去掉,例如将zlib_d.lib重命名为zlib.lib。将重命名后的文件拷贝至VS2010安装目录下的lib文件夹下,在我的win10_64bit电脑上是C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\
Win10+VS2010上安装DCMTK3.6.3(MD支持库)安装说明
 B.在解压得到的支持库dcmtk-3.6.3-win64-support_MD-msvc-12.0)的文件夹下搜索include,应该得到6个文件夹,将include文件夹下的内容全部复制到C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\目录下。
Win10+VS2010上安装DCMTK3.6.3(MD支持库)安装说明
C.将C:\DCMTK\dcmtk-3.6.3-win64-support_MD-msvc-12.0\openssl-1.1.0g\bin下的五个文件复制到C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin下。
Win10+VS2010上安装DCMTK3.6.3(MD支持库)安装说明
2. CMAKE编译
A.打开安装好的CMAKE-gui程序。关闭所有跟VS有关的程序。在where is the source code里,选择你的dcmtk源代码的位置,我的源代码位C:\DCMTK\dcmtk-3.6.3。在where to build the binaries下选择你想存放build结果的文件夹,我新建了一个C:\DCMTK\dcmtk-bin的文件夹。
Win10+VS2010上安装DCMTK3.6.3(MD支持库)安装说明
B.点击Configure,选择编译环境。我的win10_64bit电脑上装的VS2010,因此我选择的Visual Studio 2010点击finish。等待configure完成。这中间会出现***not found的信息,忽略它们。
C.这时候DCMTK会列出所有的支持库的名字,勾选上openssl,png,tiff,xml和zlib,其他的保持默认。
Win10+VS2010上安装DCMTK3.6.3(MD支持库)安装说明
D.勾选上Advanced复选框,这是下面的内容变多了。CMAKE_INSTALL_PREFIX下会有安装路径(我的安装路径是C:\DCMTK\dcmtk-install),自选,不要选择带有中文的目录。
Win10+VS2010上安装DCMTK3.6.3(MD支持库)安装说明
         E.再次点击Configure。这回Configure很快,之后点击Generate。这时候CMake使命也就完成了,可以关闭了。
3.VS2010编译

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

A.点击“生成->配置管理器Build->Batch Build,选中ALL_BUILDdebug版,点击“生成->生成解决方案”。耐心等待,会有很多个warning,应该是由字符编码不统一引起的。最后会看到97个编译 成功,0个失败。

Win10+VS2010上安装DCMTK3.6.3(MD支持库)安装说明

Win10+VS2010上安装DCMTK3.6.3(MD支持库)安装说明

Win10+VS2010上安装DCMTK3.6.3(MD支持库)安装说明

B. 之后,再选择生成->配置管理器”(Build->Batch Build),这次选择INSTALLdebug版本,点击“生成->生成解决方案。最后会显示3个工程编译成功,这时在你选择的安装目录下(默认是C:\Program Files\DCMTK,我的是C:\DCMTK\dcmtk-install)就会有lib,bin,include,etc,share,cmake文件夹,里面就是之后写程序做医学图像处理所需要的库文件了!

Win10+VS2010上安装DCMTK3.6.3(MD支持库)安装说明

Win10+VS2010上安装DCMTK3.6.3(MD支持库)安装说明

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

源代码:

#include <dcmtk\config\osconfig.h>

#include <dcmtk\dcmdata\dctk.h>

int main(void)

{

DcmFileFormat fileformat;

OFCondition oc = fileformat.loadFile("D:\\DCMTK\\110.DCM");

if(oc.good()){

OFString patientName;

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

{

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

}

}

system("pause");

return 0;

}

A. 将im-0001-0001.dcm文件放在C盘目录下:C:\DCMTK\im-0001-0001.dcm

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

Win10+VS2010上安装DCMTK3.6.3(MD支持库)安装说明

Win10+VS2010上安装DCMTK3.6.3(MD支持库)安装说明

Win10+VS2010上安装DCMTK3.6.3(MD支持库)安装说明

Win10+VS2010上安装DCMTK3.6.3(MD支持库)安装说明

Win10+VS2010上安装DCMTK3.6.3(MD支持库)安装说明


Win10+VS2010上安装DCMTK3.6.3(MD支持库)安装说明

Win10+VS2010上安装DCMTK3.6.3(MD支持库)安装说明

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

Win10+VS2010上安装DCMTK3.6.3(MD支持库)安装说明

Win10+VS2010上安装DCMTK3.6.3(MD支持库)安装说明

D. 配置属性(Configuration Properties)->C/C++ ->代码生成(code generation)->运行库(Runtime Library )选择(/MDd),这一步是要和之前CMAKE的编译选项一致。

Win10+VS2010上安装DCMTK3.6.3(MD支持库)安装说明

E. 配置属性(Configuration Properties)->连接器(Linker)->常规(General->附加包含目录(Additional Include Directories)里填写上一步编译出来的lib文件夹,我的电脑上是C:\DCMTK\lib,这一步是为了让程序能够找到之前编译好的lib文件。

Win10+VS2010上安装DCMTK3.6.3(MD支持库)安装说明

F. 配置属性(Configuration Properties)->连接器(Linker)->输入(Input)->附加包含目录(Additional Include Directories) 里依次加上wsock32.lib;netapi32.lib;ofstd.lib;oflog.lib;dcmdata.lib;zlib.lib;这一步是加入具体我们程序需要的lib文件。网上很多的帖子中,都没有提到oflog.lib这个文件,可能是由于旧的版本中并没有使用到这个文件。但是对于3.6.3版,这个lib文件是必需的。

Win10+VS2010上安装DCMTK3.6.3(MD支持库)安装说明

G. Apply ,ok,编译工程,运行,这时候可能会生成失败,如果是如下错误

<1>error C2678: 二进制“+”: 没有找到接受“const wchar_t [8]”类型的左操作数的运算符(或没有可接受的转换)

<2>error C2665: “dcmtk::log4cplus::Logger::getInstance”: 2 个重载中没有一个可以转换所有参数类型

Win10+VS2010上安装DCMTK3.6.3(MD支持库)安装说明

那么我们右键单击工程名,选择属性(properties),在配置属性(Configuration Properties)->(常规General)->字符集->使用多字节字符集。然后再次重新编译就不会再出现这样的问题了。

Win10+VS2010上安装DCMTK3.6.3(MD支持库)安装说明

H.   我们再次重新编译,这时候可能会生成失败,如果是以下错误:

<1>error LNK2019: 无法解析的外部符号 [email protected],该符号在函数 "struct _IP_ADAPTER_INFO * __cdecl getMACAddresses(class OFVector<unsigned char> &)" ([email protected]@[email protected]@[email protected]@@@Z) 中被引用

<2>error LNK2019: 无法解析的外部符号 [email protected],该符号在函数 "int __cdecl dcmtk::log4cplus::helpers::openSocket(unsigned short,enum dcmtk::log4cplus::helpers::SocketState &)" ([email protected]@[email protected]@@[email protected]@@Z) 中被引用

Win10+VS2010上安装DCMTK3.6.3(MD支持库)安装说明

第一种解决方法:

如果是第一个错误,就在cpp文件Include后添加 #pragma comment(lib, "Iphlpapi.lib")

如果是第二个错误,就在cpp文件Include后添加 #pragma comment(lib, "ws2_32.lib")

Win10+VS2010上安装DCMTK3.6.3(MD支持库)安装说明

第二种解决方法:

右键单击工程名,选择属性(properties)配置属性(Configuration Properties)->连接器(Linker)->输入(Input)->附加包含目录

(Additional Include Directories)添加Iphlpapi.libws2_32.lib

Win10+VS2010上安装DCMTK3.6.3(MD支持库)安装说明

I.     然后重新编译运行,命令行应该输出Patient Name:CARCINOMIX

Win10+VS2010上安装DCMTK3.6.3(MD支持库)安装说明

 

Happy dcmtking!