C++ 包含目录、库目录、附加依赖项详解

在使用opencv库,以及其他库的时候,经常会需要添加包含目录、库目录、附加依赖项等。现做一个总结吧。

1、包含目录

是.h的头文件所在的目录,如果没有正确包含目录,代码中会出现红色的警告,各种未定义的标识符。

添加库目录的绝对路径自然不必多说。

讲下添加相对路径的一个小技巧:..\..\include     每一次  ..\  都会向上移动一个目录,暂且认为最原始的目录为(.vcproj) 目录,或者生成exe文件所在目录

2、库目录

为各种.lib文件所在的目录,lib文件仅在vs编译时需要。

如果没有正确包含库目录,编译器会报错,提示无法找到.lib文件。

添加库目录的小技巧:$(SolutionDir)表示.sln文件所在的目录,$(ProjectDir)表示 .vcproj所在目录。示例:$(SolutionDir)\Debug

3、附加依赖项

附加依赖项为vs编译时,所需.lib文件的名称。与库目录相对应。

如果没有正确包含附加依赖项,会出现,无法解析的外部符号等错误。

4、.dll文件

.dll文件是运行时需要的执行文件,当编译之后,仅需要dll即可,一般情况下与.exe在同一目录即可。

5、C++预处理器定义

C/C++ ->预处理器 ->预处理器定义

VC包含目录、附加依赖项、库目录及具体设置

包含目录:#include 中headerfile.h的搜索目录。
如果有XXX.h找不到,设置这个目录可以解决。

附加依赖项:C++的库会把函数、类的声明放在*.h中,实现放在*.cpp或*.cc中。编译之后,*.cpp,*.cc,*.c会被打包成一个.lib文件,这样可以保护源代码。
所以,要使用一个库,除了要include他的头文件以外,还要在链接过程中把lib加进去。这个就是在附加链接库中设置。
其实,一般的库会用#pragma comment(lib,"xxx.lib") 来设置
这个过程出错会出现link error,大概是“未定义的函数XXX”。

库目录:就是寻找.lib文件的目录。
如果设置错误,会link error,提示"找不到XXX.lib"。

在VS工程中,添加c/c++工程中外部头文件及库的基本步骤:

    1、添加工程的头文件目录:工程---属性---配置属性---c/c++---常规---附加包含目录:加上头文件存放目录。

    2、添加文件引用的lib静态库路径:工程---属性---配置属性---链接器---常规---附加库目录:加上lib文件存放目录。
         然后添加工程引用的lib文件名:工程---属性---配置属性---链接器---输入---附加依赖项:加上lib文件名。

    3、添加工程引用的dll动态库:把引用的dll放到工程的可执行文件所在的目录下。

MFC中添加"附加包含目录"、“附加包含目录”以及“附加库目录”

1.附加包含目录

方法:
   (1)[解决方案资源管理器]:右键项目->属性->配置属性->C/C++->常规->附加包含目录;
   (2)[菜单]:工具->选项->项目和解决方案->C++目录,选择对应平台,然后添加所需“包括文件”目录;
功能:添加的是项目中用到的include头文件,把外部依赖库的头文件地址添加在这里。

2.附加库目录

方法:
   (1)[解决方案资源管理器]:右键项目->属性->配置属性->链接器>常规->附加库目录;
   (2)[菜单]:工具->选项->项目和解决方案->C++目录,选择对应平台,然后添加所需“库文件”目录;
功能:将外部依赖库的lib文件地址添加在这里;

2.附加依赖目录

方法:
   (1)[解决方案资源管理器]:右键项目->属性->配置属性->链接器>输入->附加依赖项,在其中填写具体使用到的具体的lib名称,包含后缀名如"opencv_world300d.lib"。效果等同于

 #pragma comment(lib, "opencv_world300d.lib") 

   (2)[菜单]:工具->选项->项目和解决方案->C++目录,选择对应平台,然后添加所需“库文件”目录;
功能:将使用到的外部依赖库的lib文件名称添加在这里;

例:
opencv配置
  假设opencv解压在D盘opencv文件中
  (1)添加附加包含目录: D:\opencv\build\include;
  (2)附加库目录: D:\opencv\build\x86\vc12\lib;(这里我的项目目标计算机是x86,故选x86)
    注:项目目标计算机查看与设值方法:
      (a)右键项目–>属性–>链接器–>高级–>目标计算机;
      (b)右键项目–>配置管理器”–>活动平台解决方案;
  (3)添加外部依赖项: opencv_world300d.lib;
    注:lib文件夹里有opencv_world300d.lib,opencv_ts300d.lib,opencv_world300.lib,opencv_ts300.lib四个文件,前两个带"d"表示debug版本,后两个表示release版本,根据需求添加。
  (4)复制opencv_world300d.dll放在项目debug文件夹中。

Eigen配置
  仅添加附加包含目录即可:D:\eigen-eigen-07105f7124f9\Eigen

你可能感兴趣的:(QT,后端)