dev-c++创建lib(静态链接库)文件的实现步骤
目录
- 第一步:制作静态链接库
- 第二步:链接静态链接库
- 方法一:使用项目
- 方法二:修改编译选项
- 第三步:使用库函数
- 方法一
- 方法二:
第一步:制作静态链接库 1.打开dev-c++,选择“新建-项目”,如下图所示。
文章图片
2.选择“Static Library”,并选择编程语言(c和c++无所谓)以及给项目设置名称。
文章图片
【dev-c++创建lib(静态链接库)文件的实现步骤】3.选择你要保存的位置。
文章图片
4.在新建的文件里添加函数,我这里添加了两个:一个叫hello,用来弹出一个对话框;一个叫add,返回两个数的和。
文章图片
5.保存文件(文件名可以随便选,我这里选择了main.cpp)
文章图片
6.点击“编译”按钮。
文章图片
编译完成后,可能会出现以下界面:
文章图片
这时,有人会觉得很奇怪:“我的程序没问题呀,为什么它报错呢?????”
仔细一看,它只不过是把使用的命令给显示了一遍,而不是报错。
7.在生成的文件中找到一个.a文件(我这里是hello.a,因为项目名是hello,你的可能不一样),这就是生成的静态链接库文件。
文章图片
第二步:链接静态链接库 库做好了,但是我们编程的时候怎么用它呢?方法就是链接。在自己的代码中链接静态链接库,有两种方法,各有优劣。
方法一:使用项目
1.新建一个console application项目。(不能是源代码,必须是console application,如果你像我一样不喜欢console application,请使用方法二)
文章图片
2.选择保存位置。
文章图片
3.打开“项目属性 -> 参数”。
文章图片
4.点击“加入库或对象”,把刚才的库加进去。
文章图片
5.点击“确定”,大功告成!
文章图片
优点:
1.只有这个项目的文件才会链接该库,别的文件不会。
2.网上比较常见。
缺点:
1.只能新建console application,不能新建源代码。(说实话,我非常不喜欢console application)
因此,这种方法适合链接不太常用的库。
方法二:修改编译选项
1.将自己的库重命名,命名为“libxxx.a”,例如“libhello.a”。
文章图片
2.新建一个源代码(这回不用console application了,我好开心!)
文章图片
3.打开“工具 -> 编译选项。”
文章图片
4.找到“在连接器命令行加入以下命令”,在那个框里加入以下命令(如果框里已经有命令了,就在末尾加一个空格,再输入下面的命令):
-l你的库名(去掉开头的lib和结尾的.a)
举个例子:我的库名是libhello.a(见第1步),那么我应该加上命令:
-lhello
注意,以下3种写法都是错误的:
-llibhello.a-llibhello-lhello.a
再比如,你的库名是libtest.a,你应该加上:
-ltest
示例图(以我的库为例):
文章图片
能不能在-l和库名之间加一个空格呢?当然可以!
5.还没完!找到“目录 -> 库”。
文章图片
6.把你的库的路径添加进去。怎么添加?点击右下角的“浏览”按钮,找到库的路径,点“确定”。
文章图片
7.点“添加”,再点“确定”,OK!
文章图片
优点:
1.可以新建源代码,而不是我讨厌的console application。。。
缺点:
1.每次会自动链接该库,导致可执行文件体积巨大。
2.网上不常见,遇到了问题很难解决。
因此,这种方法适合经常使用的库。
第三步:使用库函数 万事俱备,只欠东风!库也造好了,链接也链接了,就差调用库函数了!怎么调用呢?还是有两种方法。
注意:如果你是在console application中链接静态链接库,则你只能在项目文件中调用库函数;如果你修改了编译选项,则每一个程序都可以调用库函数!
方法一
1.在需要调用库函数的代码里,写出库函数的函数原型。(必须写函数原型,否则会报错!)
文章图片
2.直接调用函数即可。(下图为完整代码)
文章图片
#includevoid hello(); int add(int a,int b); int main(){ printf("%d",add(1,2)); hello(); return 0; }
运行效果:
文章图片
优点:操作简单。
缺点:只有你自己知道函数原型,如果别人使用此函数,就不得不向你询问函数原型。
因此这种方法适合自己使用库函数。
方法二:
1.把函数原型写在一个头文件里。
文章图片
2.引入头文件,就可以使用库函数了!
文章图片
优点:别人可以知道函数原型。
缺点:比较麻烦。
因此,这种方法适合共享给别人。
到此这篇关于dev-c++创建lib(静态链接库)文件的实现步骤的文章就介绍到这了,更多相关dev-c++创建lib内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- Dev-C++调试方法的具体使用
- 创建子进程
- Windows8系统下如何创建虚拟网卡
- win7系统远程连接设置 无法在中关村Win7中创建远程连接咋办
- 开发环境Ubuntu 中使用 VSCode 开发 C/C++ ④ ( 创建 tasks.json 编译器构建配置文件 | tasks.json 编译器构建配置文件分析 )
- 对象可以创建数组吗|对象可以创建数组吗_带你手写一个对象,深入理解可迭代对象是什么,与类数组有什么区别...
- 创建用户流程
- openstack实例的创建
- Spring认证指南|了解如何创建异步服务方法。
- 微服务|springboot和springcloudAlibaba的版本对应关系