VS(或通用的) 头文件的路径、库文件的路径和库连接相关问题
使用第三方库时就需要调用到其头文件(.hpp)和库文件(.lib和.dll),所以需要将他们路径告知工程,工程才找得到他们,下面介绍如何选择正确路径
以VS2017为例。本次例子调用到opencv库和osqpEigen库
首先是头文件(include),程序中如此包含的
#include <opencv.hpp> #include <Data.hpp> #include <Settings.hpp> #include <Solver.hpp>
即需要用到opencv.hpp,Data.hpp,Settings.hpp,Solver.hpp这几个头文件,而这几个头文件所在位置绝对路径分别是
D:\work\opencv4_x64-windows\include\opencv2
D:\work\lib\osqp-eigen\OsqpEigen
所以添加进VS工程
但如果程序是如此包含的
#include <opencv2/opencv.hpp> #include <OsqpEigen/Data.hpp> #include <OsqpEigen/Settings.hpp> #include <OsqpEigen/Solver.hpp>
可以看出,同时include头文件和其上一层路径,即要找到其“上一层路径的所在路径”
即
D:\work\opencv4_x64-windows\include
D:\work\lib\osqp-eigen
因为我们此时是要找头文件的所在文件夹而不是头文件
然后是库路径
先回顾下.lib和.dll
-
.lib(静态链接库)是一种在编译时链接到程序中的库文件,其中包含一组函数和数据,这些函数和数据在程序运行时被加载到内存中。当程序链接到.lib文件时,它将包含在最终的可执行文件中,这样程序就可以直接调用库中的函数和访问库中的数据。因此,.lib文件只在编译时使用。
-
.dll(动态链接库)是一种在运行时加载到程序中的库文件,其中包含一组函数和数据,这些函数和数据在程序运行时被加载到内存中。当程序调用.dll文件中的函数时,它将在运行时从.dll文件中加载。因此,.dll文件只在运行时使用。
在某些情况下,程序只需要使用静态链接库(.lib文件),例如程序的规模比较小,不需要动态加载库文件,或者程序不需要共享库文件的代码和数据。
而在其他情况下,程序需要使用动态链接库(.dll文件),例如程序规模比较大,需要加载大量的库文件,或者程序需要共享库文件的代码和数据。
讲人话:你要用到的库里面的函数,首先就得有存放函数代码的库文件,然后从里面去调用,这个库文件就是lib文件,如果库里面函数太多了,而某些时候只需要调用其中一小部分,则可以通过动态库dll,dll从lib知道函数位置然后调用。
而库的路径添加就比较简单,直接找到lib的所在路径(如果代码要用到的是dll则找到lib和dll两个路径)添加进去就可以了,无需像头文件那样考虑从哪一层开始include
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通