菜鸟笔记:c/c++中关于lib与dll文件的生成与使用。

        当我们的软件大到一定程度的时候,就要考虑将软件划分为多个模块,从而降低软件的复杂度以及复用部分资源。模块的主要表现形式有很多种,其中最常用的就是lib和dll文件。下面简单讲一下lib和dll的生成和使用方法。

        先讲一下静态链接与动态链接。静态链接是指在编译的时候就把模块的内容加载进来一起编译,这样编出来的exe文件包含了模块的内容,因此会比较大。而动态链接是指程序在运行时去加载模块中所需要的函数,exe文件与模块文件是分离的。一般来说,静态链接用的是lib文件,动态链接用的是dll文件。

      下面开始讲如何生成lib和dll文件吧。其实都很简单,以VC为例,先创建对应的工程(lib或dll),如果是lib,给每个需要导出的函数前加上extern修饰就行了,像这样:

       extern void my_function() {...}。如果是dll,则在函数前加上__declspec(dllexport),如__declspec(dllexport) void my_function{...}。

        使用lib也很简单,首先在工程的链接选项里加入你要链接的lib文件,然后在你想用lib里面的函数时,用extern声明一下就行了,比如extern void my_function(),这样编译器遇到my_function这个函数时就会在你指定的lib中查找。另外需要提一下的是,如果lib里面的函数是c写的,那么在c++中使用这些函数的时候需要这样声明:

        extern "C" {extern void my_function()},这是因为c和c++在生成lib时对函数的命名规则不同,使用extern "C"是告诉编译器要按照C的命名规则来查找函数。

        使用dll还是很简单,不过有两种使用方式。一种是使用LoadLibrary在运行时加载dll,然后获得函数的地址再使用。如果我们要大量使用该dll里面的函数时,这种用法是非常不方便的,能不能像使用lib一样使用dll呢?答案是肯定的。dll工程在生成dll文件的同时还会生成一个同名的lib文件,这个lib文件和上面说的lib文件是不同的,可以看作是一个对生成的dll进行描述的文件。我们只要像使用lib一样把dll的lib文件加到工程中,就可以像静态链接那样使用dll里面的函数了(还是需要用extern声明)。

        写得很匆忙,可能有不少错误的地方,而且对于新手来说很多细节也没说清楚(网上搜一下相关概念就行了)。希望能得多大虾们的指正与补充,也希望本文能帮助到一些新手。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值