c++中静态库和动态库的创建与链接(二)

2、动态库

     在使用动态库的时候,往往提供两个文件:一个引入库(.lib)和一个DLL(.dll)文件。虽然引入库的后缀也是.lib ,但是动态库的引入库文件和静态库文件有着本质的区别,对一个DLL来说,其引入库文件(.lib)包含DLL导出的函数和变量的符号名,而.dll文件包含该DLL实际的函数和数据。在使用动态库的情况下,在编译链接可执行文件时,只需要链接该DLL的引入库文件,该DLL中的函数代码和数据并不复制到可执行文件中。发布产品时,需要同时发布.exe和动态链接库。动态链接库的加载包含:隐式链接和显式加载

2.1隐式链接

2.1.1动态库的创建

A:File->New->Projects->Win32 Dynamic-Link Library(这里我建立的是dllTest1)

B:File->New->Files(dll.h)

dll.h

#ifdef DLL_API
#else
#define DLL_API extern "C" _declspec(dllimport)  表示该函数是从动态链接库中引入的

#endif

DLL_API int add(int a,int b);

 

C:File->New->Files(dll.cpp)

#define DLL_API extern "C" _declspec(dllexport) 表示该函数是动态链接库的导出函数
#include "dll.h"
int add(int a,int b)
{
 return a+b;
}

D:编译,生成dllTest1.lib和dllTest1.dll文件

    上面 extern "C" 表示我们希望动态链接库文件在编译时,导出函数的名称不要改变。注意双引号中的C一定大写。但是extern "C"不能用于导出一个类的成员函数,只能用于导出全局函数这种情况。

2.1.2动态库的隐式链接

我采用基于对话框的MFC应用程序进行测试,具体步骤不一一详解。只介绍下需要包含的文件。

将创建的动态库dll.h  dllTest1.lib  dllTest1.dll三个文件copy到测试程序文件夹内

A:在cpp文件中包含头文件#include"dll.h"

B:然后再Projects->Settings->Link->Objects/library modules下加入dllTest1.lib 完成

C:运行就OK

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值