动态链接库(dll)文件的动态调用(使用动态链接库,解析Wis文件--测井数据文件的一种)
在画出井眼轨迹后,老师又给了三口井的数据,不过这次给的数据是WIS格式的,可以使用一个动态链接库进行解析,解析结束后会生成一个固定格式的txt文件,然后再读取txt文件,画井眼轨迹。
学长给了一个可以将wis文件转化成txt文件的动态链接库(dll)及其头文件。在网上搜资料的时候,看到有两种情况:有lib文件、头文件和dll文件;只有dll文件。但是我有的是头文件和dll文件。。。后来我才发现,我这种属于后一种情况:只有dll文件。
头文件的作用只是告诉我,链接库里的函数是怎么声明的,这样我在动态加载链接库的时候就可以知道,怎么去找函数了。下面是我的实现过程。
typedef void (*Func)(char *inName, char *outName);//我这里实现的是读入wis文件,输出txt文件 HMODULE hDll = LoadLibrary(L"WisReader.dll");//加载dll文件 if(hDll != NULL) { qDebug()<<"sucess"<<endl;//测试是否读取成功 Func ReadWis; ReadWis = (Func)::GetProcAddress(hDll,"ReadWis");//找到dll文件里的实现函数 ReadWis("xxxx.wis","xxxx.txt");调用 (Func)::FreeLibrary(hDll);//卸载链接库 }
第一种情况的话,网上有很多教程和对三个文件的解释。