MSVC6 MFC中如何使用dcmtk3.5.4

MSVC6 MFC中如何使用dcmtk3.5.4

0.准备工作
0.1 去http://www.dcmtk.org/dcmtk.php.en下载DCMTK 3.5.4 - source code and documentation

和一个支持库压缩文件,这个文件不能用页面上的这个DCMTK 3.5.4 - support libraries for

Windows,因为它是用/MT和/MTd编译的。也不能用页面上的这个DCMTK - user contributions,因

为那个只能用于vs2005,可用网友simeon提供的那个,是在vs6下用/MD和/MDd选项编译的,但是不

支持xml和openssl

0.2 更改dcmtk-3.5.4下的CMakeList.txt中的/MT和/MTd为/MD和/MDd,因为MFC必须使用

Multithreaded DLL

0.3 用CMake制作工程文件,这里只能将xml和openssl设为off,原因见上面。在VC中打开工程文件

dcmtk.dsw,并编译。编译完后再打开项目文件INSTALL.dsp,编译后会生成一个dcmtk-3.5.4-

win32-i386的目录,其中包括所有可用的lib和include头文件


1.选择project settings中的C/C++,设置下面两项:
1.1 Category: Code Generation的Use run-time library选择Debug Multithreaded DLL,在MFC

下为默认选项

1.2 Preprocessor的Additional include directories加上
D:\dcmtk-3.5.4-win32-i386\include


2.选择project settings中的link,选择Category为Input,设置下面两项:
2.1 在Additional library path中添加
D:\dcmtk-3.5.4-win32-i386\lib,D:\dcmtk-3.5.4-win32-i386-support\zlib-1.2.3\lib
其中D:\dcmtk-3.5.4-win32-i386-support为支持库如zlib的安装路径

2.2 在Object/library modules中添加
netapi32.lib wsock32.lib zlib_d.lib ofstd.lib dcmdata.lib
前两个是必须要加的,以支持winsock。

下面是一个例子,显示dicom文件中病人的名字:
#include "dcmtk\dcmdata\dcdeftag.h"
#include "dcmtk\dcmdata\dcfilefo.h"


void CDcmMFCView::OnTryDicom()
{
 CString strName;
 DcmFileFormat fileformat;
 OFCondition status = fileformat.loadFile("IM000007.dcm");
 if (status.good())
 {
   OFString patientsName;
   if (fileformat.getDataset()->findAndGetOFString(DCM_PatientsName,

patientsName).good())
   {
    strName = patientsName.data();
    AfxMessageBox(strName);
  cout << "Patient's Name: " << patientsName << endl;
   } else
  cerr << "Error: cannot access Patient's Name!" << endl;
 } else
   cerr << "Error: cannot read DICOM file (" << status.text() << ")" << endl;
}
 

转自:http://blog.csdn.net/chenm91/archive/2007/05/08/1600194.aspx

posted @ 2010-05-31 21:17  微笑的艾米  阅读(1006)  评论(1编辑  收藏  举报