打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
菜鸟笔记:c/c++中关于lib与dll文件的生成与使用。
分类: Win32 develop C++ 2013-01-31 21:22 385人阅读 评论(2) 收藏 举报

        当我们的软件大到一定程度的时候,就要考虑将软件划分为多个模块,从而降低软件的复杂度以及复用部分资源。模块的主要表现形式有很多种,其中最常用的就是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
查看评论
1楼 hengyuye 2013-04-10 16:15发表 [回复]
如果是类要怎么做呢?
Re: Isaf 2013-05-14 19:33发表 [回复]
回复hengyuye:一样的啊,声明类的时候用__declspec(dllexport)描述一下就行了。比如:class __declspec(dllexport) CMyClass{}
发表评论
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
动态链接库创建与使用
VC++中(.def) 文件
VS中def文件对于生成dll和lib文件的作用
C 编程笔记:dll的生成与使用
使用VS2015创建 纯C的DLL及其调用
使用 __declspec(dllexport) 从 DLL 导出
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服