VS2013下lib和dll的生成与使用方法——高度总结

扫盲:

1. lib是静态库,编译时直接加载,dll是动态库,运行时才加载

2. lib简单粗暴,dll精巧灵活

3. lib大,dll小

4. lib工程的输出有两样:xxx.h/xxx.lib

5. dll工程的输出有三样: xxx.h/xxx.lib/xxx.dll(此处xxx.lib和lib工程编译的xxx.lib性质不同)

6. 使用lib编译的exe大,可以单独发布;使用dll编译的exe小,dll要同步发布

此处只给出个人的使用感受,详细扫盲请参阅参考链接1

库的生成:

1.      无论是生成lib还是dll,创建项目时请选择“空工程”

2.      无论想生成lib还是dll,创建项目时请按需求选择创建dll还是lib(创建工程选错了也没关系,只要确保“工程属性->属性配置->常规->项目默认值->配置类型=静态库(.lib)或者动态库(.dll)即可)

3.      lib生成不需要做任何修改,直接可生成

4.      dll生成比lib多一步,在API的头文件上对欲导出的函数或者变量进行export声明,方法有两种(标准解决方案):

a)        #define API_DECLEARE __declspec(dllexport)

然后再利用“API_DECLEARE”对目标函数进行声明即可(把这个宏想象成extern)

例如: 

int add(int, int);
改为:API_DECLARE int add(int, int);
class cExample
{
    public:
    ...
}
改为:
class API_DECLARE cExample
{
    public:
    ...
}

b)        建立模块定义文件来统一管理(module.def)

然后

LIBRARY "DLLGenerator"  

EXPORTS  

     Add @1  

      Mul @2 

如上所示声明即可

 

库的使用:

开始使用前请检查xxx.h/xxx.lib/xxx.dll(静态调用不需要)已经准备好了

无论是lib还是dll,都需要按照如下进行配置

1.      准备好头文件和模块。

2.      配置头文件和lib文件的路径

a)        如果把头文件和lib文件都拷贝到和main平级的文件夹下,则不用手动配置路径

b)        如果不是,请依次配置:

                        i.             头文件路径配置:属性->配置属性->C/C++->常规->附加包含目录

                      ii.             lib文件路径配置:属性->配置属性->链接器->常规->附加库目录

3.      将lib添加到“附加依赖项”,使得lib发挥作用,方法为:

a)        属性->配置属性->链接器->输入->附加依赖项:把xxx.lib的名字写上

如果使用dll,还需进行一项配置

4.      把xxx.dll拷贝到程序执行目录下(和xxx.exe放到一起)

 

参考链接:

1.      lib和dll的区别和联系:

https://blog.csdn.net/ghevinn/article/details/43759655

2.      微软提供的原版DLL创建和使用工程示例(亲测可行,但是DLL的引用如果不在同一个解决方案内则不行)

https://msdn.microsoft.com/zh-cn/library/ms235636.aspx

3.      关于dllexport的微软的官方解释:

https://msdn.microsoft.com/zh-cn/library/3y1sfaz2.aspx

4.      关于DLL引用CSDN上的参考解决方案:

https://blog.csdn.net/stl1634614466/article/details/68061788

5.      C的dll生成方法:

http://www.360doc.com/content/17/0324/14/18635950_639747726.shtml

http://www.jb51.net/article/127920.htm

 


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yinchao163

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值