dcmtk与wxWidgets混合编程

本文介绍了在vc6.0环境下,如何编译和安装dcmtk库,解决编译过程中遇到的LNK2005错误。同时,展示了如何编写使用DCMReader类读取DICOM图像文件,获取图像数据并处理窗口中心和宽度的方法。
摘要由CSDN通过智能技术生成

环境:IDE:vc6.0 OS:xp

一、库编译、安装

a、wx库的编译、安装可以参考上一篇中所写。就没有问题的。

b、dcmtk库的编译、安装

1、首先当然是要下载库源文件了,这些在官方网站上都可以下,下载源文件和支持库即可。解压后,就会发现有个CMakelist.txt文件,一看就知道要用cmake生成工程文件了。所以,这所有的前提是你下载了cmake,并且会用cmake

因为wx的run_time library要在Debug Multithreaded dll下运行,所以先将CMakelist文件中的MTd和MT全都换成MDd和MD。

2、打开cmake设置好源路径和安装路径,点击configure,这时,就会出现一些选项,设置好这些选项,像库的安装路径,是否需要支持库,需要的话就要找到这些库的路径。都设置完后,再点击config,点击ok,这时有个警告,这个警告时cmake版本问题,应该是问题不大的。

3、cmake完成后,在设置的安装路径下面,就可以看到dcmtk的工程文件,用vc6打开,将run_time library设置为Debug Multithreaded dll,编译,这时如果出现LINK2005错误,与下面类似:

 

Linking...

MSVCRTD.LIB(MSVCRTD.dll) : error LNK2005: __errno already defined in LIBCMTD.LIB(dosmap.obj)

MSVCRTD.LIB(MSVCRTD.dll) : error LNK2005: _free already defined in LIBCMTD.LIB(dbgheap.obj)

MSVCRTD.LIB(MSVCRTD.dll) : error LNK2005: _realloc already defined in LIBCMTD.LIB(dbgheap.obj)

MSVCRTD.LIB(MSVCRTD.dll) : error LNK2005: _malloc already defined in LIBCMTD.LIB(dbgheap.obj)

MSVCRTD.LIB(MSVCRTD.dll) : error LNK2005: _memmove already defined in LIBCMTD.LIB(memmove.obj)

4、解决办法:a、可以在link-》input中将上面的库设置为忽略库,即:MSVCRTD.LIB。b、按着这种顺序MSVCRTD.LIB LIBCMTD.LIB添加这两种库。c、上面两种方法结合,先按顺序添加,再忽略。这样就可以解决LNK2005的错误。

5、编写实际例子,这写例子前,先说下,程序写完后,编译,可能会出现两个库的宏定义冲突了。警告时没有关系的,主要是有一个错误:ssize_t两次定义的类型不同,这个问题的解决方法是,只需要将其中一个库的源文件中的ssize_t的定义注释掉就可以了。这里只给出两个主要类的代码:

类DcmReader

 

#include "DcmReader.h"

#include "myDcm.h"

#include "dcmtk/dcmimgle/dcmimage.h"

#include "dcmtk/dcmdata/dcfilefo.h"

#include "dcmtk/dcmdata/dcdeftag.h"

#define DE

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值