当前位置:C++技术网 > 资讯 > dll动态链接库全面讲解:1 通过预编译指令引用lib导入库来使用dll

dll动态链接库全面讲解:1 通过预编译指令引用lib导入库来使用dll

更新时间:2015-10-25 15:32:12浏览次数:1+次

    我们在《lib库知识全面讲解4:lib导入库有什么用,怎么生成lib导入库和dll?》中介绍了如何生成dll和对应的lib导入库。生成后,我们将头文件、lib导入库和dll复制出来,放在要使用dll的项目的源代码文件夹里。
    最终使用dll,建议生成Release版本的dll放在项目里使用。当然,你可以生成Debug和Release版的两个dll,根据项目是什么模式,使用哪一个。
    有了头文件、lib导入库和dll,我们先介绍如何通过lib导入库使用dll吧。
    首先你建立一个控制台程序项目,然后将这三个文件添加到源文件的文件夹中,然后添加头文件,将dll的头文件添加到项目中。在需要使用的代码文件中,包含dll头文件即可。
    使用lib导入库,和使用静态lib库一样的引用,方法见《lib库知识全面讲解3:如何使用静态lib库?如何静态链接开源库第三方库?》。这种方法就不再重复了。那么我们来看看另一种方法,使用预编译指令引入lib导入库。这个指令也可以引入静态lib库。
    使用预编译指令pragma在代码中写一个引入lib库,这样不需要去项目配置,非常方便。使用语法如下:

#pragma comment(lib,"lib库的名字.lib")

     注意,后面不要分号。这里可以是lib导入库也可以是静态lib库,统称为lib库。这个写法的预编译指令就是引入lib库使用的。这样一句话,就省掉设置的麻烦,而且代码复制给别人,别人不必去设置项目属性,移植性很好。我喜欢这种方式。
    引入lib导入库之后,使用函数,就和你自己在cpp中写的函数一样使用,没有任何问题。这个dll的头文件myDll.h如下:

#include <stdio.h>
void show();
void showme();

     那么我们使用时,包含myDll.h,然后就可以直接使用这两个函数了。我们在main函数所在的cpp文件中使用,先包含头文件myDll.h,然后直接调用show和showme函数。代码如下:

#include "myDll.h"
#pragma comment(lib,"myDll.lib")
void main()
{
    show();
    printf("\n");// - 因为dll头文件包含了标准输入输出头文件了。
    showme();
    printf("\n");
}

     运行的效果图如下:

   
    是不是很简单呢?用lib导入库使用dll就是这么方便。生成的exe文件,就依赖这个dll文件了,所以,最终给别人使用的时候,一定要将exe和dll文件放在同一个文件夹。不然的话,运行exe的时候就会提示丢失了dll,如下所示: