动态链接库之静态加载

首先先解释一下什么叫动态链接库的静态加载

其实静态加载的概念很简单,其实就是调用动态链接版的静态链接库lib,但是又必须拥有.dll的动态链接库文件

动态链接库的静态加载前提:(我这里命名为DLL1)

1.工程里必须拥有动态链接库生成的.dll

2.工程里必须拥有动态链接库生成的.lib

3.工程里必须拥有关于动态链接库的.h文件(test.h是动态库里面提供的.h文件)

好了,那我们应该怎么去用静态加载呢?

很简单,有两种方法:

第一种:手动式

#pragma comment(lib, "Dll1.lib")

这种方式可能比较麻烦,但是代码的可移植性较好,因为用第二种方式,如果你是在网上发布源码,可能别人下载代码之后没有设置.lib的路径就会编译出错

 

第二种:在编译器中去设置(这里我用的是VS2017)

项目右键找到属性    -->    链接器    -->    常规    -->    附加目录库:.\(因为我的.dll和.lib就放在本地目录下,如果你的在别的目录,就设置这里的路径)

并且在

链接器    -->    输入    -->    附加依赖项添加:DLL1.lib;(注意,我的lib是DLL1,而且是添加我们的.lib)

 

实例:这里我采取第一种方法,比较容易观察

首先我们先查看test.h头文件的内容

 

可能你会很奇怪__declspec(dllexport)这是什么,这个先放一放,待会儿会解释清楚,你先知道这个是导出到我们的.dll文件列表里,而Max函数是区别Add和Sub函数的

 

我们再看main.cpp头文件

 

这里是我们的主程序调用

结果:

 

这是因为我们没有向外__declspec(dllexport)造成的,在这里我推荐一款查看.dll文件内容的软件Dependency Walker

我们可以看到只有Add函数和Sub在.dll里面有记录,Max函数并没有记录

 

 

 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值