首先说一下需求:
在windows环境下,开发出一种对话框类程序,输入文件名或者具体数据集的名字,可以读取hdf4文件的数据,供后续使用。
一些简单介绍:
HDF格式一种数据存储格式, 如果想读取其中的数据,我知道有两种方法,一种是在程序中内嵌idl控件的方法;另一种是用Hdf库的方法。第一种方法比较麻烦,因为idl语言的语法和c不同。我就采用第2种方法。
准备工作:
第2种方法需要到www.hdforg.com网站下载库文件和支持库文件,库要用HDF4的库(因为国内的hdf数据都是Hdf4的,你用hdf5作出的程序读不了hdf4的文件。其实这是版本兼容性的问题,hdforg那个公司做的这点不好),支持库是三个,包括jepg,szip,zlib,版本注意选择。另外本地装上VC开发工具。
环境搭建:
好了,废话了那么多,开始讲讲怎么搭建开发环境吧。在hdf4库解压缩后,有个文件INSTALL_WINDOWS.txt,我的环境搭建差不多就是从里面学到的,不过里面废话实在太多了。
总结起来就两个:
一是环境变量设置,一是增加包含头文件的目录和库的目录,并且添加链接库
先说环境变量设置。因为在HDF4库里使用了以下三个宏,来包含进支持库的功能,所以如果要使用支持库,就要定义这三个宏。
HDF4_EXT_ZLIB
HDF4_EXT_JPEG
HDF4_EXT_SZIP
在我的电脑,右键->属性->高级->环境变量,在用户变量那里,点击New,变量名就是宏的名字,变量值就是库的路径,将这三个宏,分别添加。
如果是用Hdf的库,注意需要将宏的名字改了
改成
HDF5_EXT_ZLIB
HDF5_EXT_JPEG
HDF5_EXT_SZIP
变量值设置方法相同。
下面来讲一下 增加包含头文件的目录和库的目录,并且添加链接库;
在VC6里,打开新建工程后,在菜单“工具”下面的“选项”里目录下面,选择include files,增加包含hdf4的头文件还有支持库的头文件路径,共4个。然后选择library files,添加hdf4库和支持库的库路径还有动态链接库的库路径。然后确定保存。
在“工程”菜单下,选择“设置”,“链接”,在对象/库模块里,原来的不要去掉,在后面加上hdf4的库名和支持库的库文件名字,中间用空格分开。
在VS2005里,略有不同。头文件和库文件路径的添加在"工具"->"选项"->"项目和解决方案"->"VC++目录"里设置。链接库在“项目”->"属性"->"配置属性"->"连接器"->"输入"->"附加依赖库"里添加。
备注说明:
hdf4不支持mfc,只支持控制台程序。所以如果想编写对话框程序,直接使用Hdf4的库是不行的,会报链接错误,说找不到__errno
我的解决办法是 使用hdf4的库做读hdf4文件的小程序,解析出其中的数据,将数据以一定的格式存储在一个txt文件里,然后开发个对话框程序,在对话框程序里执行调用这个小程序,然后读那个txt文件,将里面的数据读取解析出来,存储到我们用的数据结构里。
其实hdf4库的使用也就是这几个小程序使用的,那个对话框程序根本没有使用。说是小程序,其实也不小。设计到hdf文件的读取和解析,以及数据在txt文件里以何种结构来存储。在后续的对话框程序里也要解析这个txt文件。在txt文件里的结构设计和读写,是重点。