动态链接库(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);//卸载链接库
    }    

    第一种情况的话,网上有很多教程和对三个文件的解释。

原文地址:https://www.cnblogs.com/ling123/p/5389993.html