1.静态链接库的生成和使用

1.什么时静态链接库

静态库(Static Library)通常包含一堆程序员自定义的变量与函数,在编译期间由编译器和链接器将它集成到可执行文件中,也就是生成的.exe文件中

2.静态库的扩展名

在Windows下,静态库的扩展名是.lib,在Linux下是.a

3.静态库的优缺点

1)优点:

发布时只需发布.exe文件,因为库已经集成到可执行文件中,运行时不再依赖库

2)缺点:

静态库集成到.exe文件中,导致.exe文件较大,同时,如果后续想要升级库必须重新编译.exe文件

4.创建静态库的步骤

1)创建静态库项目

2)添加.h和.cpp文件

在StaticLib.h中:

#pragma once

int SquareSum(int a, int b);

int SumSquare(int a, int b);

在StaticLib.cpp:

#include "stdafx.h"
#include "StaticLib.h"

int SquareSum(int a, int b)
{
	return (a * a + b * b);
}

int SumSquare(int a, int b)
{
	return ((a + b) * (a + b));
}

注意添加头文件:stdafx.h

3)生成.lib文件

点击生成解决方案(不可点击运行),便得到了StaticLib.lib文件:

 

5.使用静态库

1)正常一样创建一个控制台应用程序

2)在文件中添加头文件:StaticLib.h(注意这个头文件的位置,建议拷贝到当前项目目录下)

如果在这里直接运行,便会得到错误:

3)在项目中添加lib文件,两种方法(选其一):

a)在文件中添加语句:

#pragma comment(lib,"../Debug/StaticLib.lib")

(注意lib文件的位置,这里可以添加相对路径,也可以添加绝对路径,建议也把lib文件放在当前项目下吧)

(把跟项目相关的文件放在项目下是一个好习惯,可以避免人家对你项目依赖项的寻找)

b)项目右键-》属性-》连接器-》附加库目录,在里面加入静态库所在的路径

 继续点击输入-》附加依赖项,在里面加入StaticLib.lib

这样编译也会成功

实例,main.cpp中:

#include <iostream>
using namespace std;
#include "StaticLib.h"

//#pragma comment(lib,"../Debug/StaticLib.lib")

int main()
{
	int a = 34;
	int b = 12;
	cout << SumSquare(a, b) << endl;
	cout << SquareSum(a, b) << endl;

	system("pause");
	return 0;
}

执行:

如果我们删除StaticLib.lib文件,双击.exe文件我们也能得到这样的结果(如果输出框一闪而过,就在命令提示符中运行.exe文件)

 

6.注意

1)如果上面两种方法都在同一个项目中采用了,也是不会出错的

2)用在32位生成的lib文件在64位的应用程序使用时,出现:

3)如果用64位生成的lib文件在32位的应用程序中使用时,出现:

所以,应该使用与应用程序位数相同的lib文件,不可交叉使用

 

  • 13
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

深山里的小白羊

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

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

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

打赏作者

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

抵扣说明:

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

余额充值