最近的项目是关于B/S架构下的Web版PACS开发,为了缩短研发周期,采用了该领域主流的两大开源库:DCMTK和CxImage。但是由于项目初期对CxImage开源库的编译问题,导致该开源库在MFC下无法正常运行,因此决定将功能函数在控制台下完成,然后封装成动态链接库(XXX.dll),并加载到MFC工程中。下面是对“急救车上的多种医疗设备数据采集客户端”开发中遇到的问题进行的简略记录,主要分为以下几个部分:
1)问题的背景
2)演示工程构建
3)问题分析
4)解决方案
5)总结
一、问题的背景
由于牵扯到过多的医学方面的专业知识,具体背景就不细说了,简而言之,就是一句话——将控制台下完成的功能函数封装成动态库来应用到MFC工程中,完成期望的功能。
二、演示工程构建
原始的项目中运用了DCMTK和CxImage开源库中的大量的函数,来实现医学图像的解析和传送。如果直接以原工程作为演示工程,过于繁琐,各个库不能独立运行给阅读者带来不便。因此下面搭建了一个简单的测试工程。该工程分为两部分:
1)功能实现部分:FoldWatch20130525,其实现的主要功能与原工程类似(只是省略了对医学图像处理的部分),即监控配置文件foldwatch.ini中给定的源文件夹([Directory]节中指定的值),将其下的所有bmp图像转存到目标文件夹中([DestinationDirectory]节中指定的值)。演示工程中利用了完成端口实现该功能【注】:该转移bmp文件的功能是可以直接添加到2)中的基于MFC对话框的工程中的,此处为了演示开发项目中遇到的问题,模拟DCMTK+CxImage开源库的状态,假定该功能不能在MFC工程下直接运行,需要将其编译成动态库形式方可。
2)调用显示部分:FoldWatchMain,一个简单的基于对话框的MFC工程。通过按钮来调用1)中创建的功能动态库。
三、问题分析
演示工程的对话框界面如下左图所示: