C++无论是内置库还是第三方库,都需要自己手动进行查找、配置、引入等工作。
本文即是帮助完成C++项目对于库、框架如何完成依赖引入达成可调用的目的,重点讲述开发工具Visual Studio中的操作
静态库(.lib)
静态库引入适用用于大部分无开源的第三方库,开发者不需要关心库的具体实现如何,直接将库文件放到自己的项目里,引入进行调用即可,非常方便可靠。
无论库是否有开源,最终能通过生成或下载拿到静态库文件.lib和头文件.h即可使用静态库引入方式。步骤如下:
已编译好的库
使用glfw作为示例官方下载地址:
将下载好的静态库文件glfw.lib和glfw.h按照想要的路径放置到解决方案里,例如【解决方案】\Dependencies\glfw\文件夹里;
在VS开发工具里打开应用程序项目属性(右键打开),找到C++》常规》附加包含目录,添加头文件所在基础路径$(SolutionDir)\Dependencies\glfw\;。注意第一是顶部要选择全部配置和全部平台,如果只选择了其中一种配置和平台可能会报错。其次是不要删除原本附加包含目录里已有的路径,只使用分号隔开,除非你确定那些路径已经不需要;
接着上一步,重新在属性里找链接器》常规》附加库目录,添加静态库文件所在基础路径$(SolutionDir)\Dependencies\glfw\;。之后找到链接器》输入》附加依赖项,添加静态库剩余路径glfw3.lib,基础路径和剩余路径合起来才是静态库的完整路径$(SolutionDir)\Dependencies\glfw\glfw3.lib;
在需要使用该库的项目文件代码里引入头文件,路径根据第2步基础路径所决定,如#include <glfw3.h>指向的是$(SolutionDir)\Dependencies\glfw\glfw3.h;
现在可以开始调用静态库里的方法了,代码示例:
#include <iostream>
#include <glfw3.h>
int main() {
int a = glfwInit();
std::cout << a << std::endl;
}
引用依赖库
适用于有源代码的库,例如第三方开源库,或者自己的库。
相比静态库有更好的灵活性,方便对库进行专门的优化或定制开发。
可以不放到当前解决方案里,直接作为单独项目生成静态库文件和头文件,然后按照上述方式引入静态库,也可以按照下面的方法,将源代码放到解决方案里作为单独一个库项目,让应用程序项目引入,这种方式的好处是根据应用程序需要修改库代码。
还是使用上一步有开源的glfw作为示例:
将下载好的库源代码放置到解决方案里,如放到【解决方案】\glfw\文件夹里;
在VS开发工具里打开该项目属性,找到常规》配置类型,将其选择为静态库(.lib),完成后按顺序点击下方应用Apply、确定OK按钮;
在VS开发工具里打开应用程序项目属性,找到C++》常规》附加包含目录,添加头文件所在基础路径$(SolutionDir)\glfw\src\;;
接着在VS开发工具应用程序项目打开引用栏(项目右键选择添加》引用),里面可以看到当前解决方案下所有库项目,包括我们第2步配置glfw库项目的名称和路径,在想要依赖的库项目前面打钩,并点击下方确定OK;
在需要使用该库的项目文件代码里引入头文件glfw3.h,路径根据第2步基础路径所决定,如#include <glfw3.h>指向的是$(SolutionDir)\glfw\src\glfw3.h;
现在可以开始调用引用依赖库的方法了,代码示例:
#include <iostream>
#include <glfw3.h>
int main() {
int a = glfwInit();
std::cout << a << std::endl;
}