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