前言
这篇文章应该写在这个系列里面的:VS2017的C++开发心得(九)DLL动态链接——多项目开发。
但当时没写,只写了动态链接的相关内容,是因为我认为静态链接相比较动态链接会简单得多,所以干脆就略过了。既然有人提问了,那我就简单的开发流程和主要遇到的问题来讲讲静态库的开发。
首先总体来看,静态库和动态库的区别在于:
1. 静态库只出现在项目的编译生成的链接期,而动态库则是程序运行时加载使用的;
2. 静态库只有一个.lib文件,而动态库除了一个.dll文件以外一般还有个对应的.lib文件;
3. 静态库最后会内嵌到输出的.exe或.dll中,而动态库是外挂使用;
4. 静态库是没有链接器的,因为静态库不需要链接,所以你即便有些符号没有找到实现也不会报错。
VS2019创建静态库
1. 首先创建一个控制台程序StaticLibTest,过程省略,我之前的文章有很多介绍。
2. 添加静态库项目,StaticLib1:
到这里两个项目创建起来了,但是两个项目间是毫无联系的,下面用链接器让StaticLibTest使用StaticLib1生成的静态库。
1. 在StaticLibTest中的链接器中添加StaticLib1的生成路径:
这个路径实际上就是整个解决方案的生成路径,.exe也生成在这里。我这里就没有做lib和bin分开的项目管理了。
2. 在输入中加入StaticLib1.lib
3. 在StaticLibTest.cpp中加入fnStaticLib1的调用,这个函数是VS自动生成的,在StaticLib1.cpp下面,根据你的项目名不同,这个函数名也不一样:
4. 添加项目依赖关系: