如过直接在项目头文件处,添加一下,如下图:
则,依然会报错,如下图:
有两种方法,来解决(你不在vs上的添加它也没事):
(1) 直接把外部头文件复制过来,放在此项目下即与该项目cpp文件同一目录,如下图:
(2)项目右键,属性里的C/C++ - > 常规,附加包含目录里添加头文件的所在目录路径
或者放在,项目右键,属性里的VC++目录 --->包含目录,包含目录里添加头文件的所在目录路径
https://blog.csdn.net/u012043391/article/details/54972127
编译器在编译过程中查找包含目录(Include文件)的顺序:
The compiler searches for directories in the following order:
- Directories containing the source file.
- Directories specified with the /I option, in the order that CL encounters them.
- Directories specified in the INCLUDE environment variable.
其中step2中的/I是由C/C++ -> General -> Additional Include Directories设置的。
而step3中的INCLUDE是由VC++ Directories -> Include Directories设置的。
所以从这里看出,不同的设置有不同的编译链接顺序。
参考博客:https://blog.csdn.net/u012234115/article/details/54233095
1.不附加与附加的目录或库,用哪个可以。
2.调用静态库、动态库
(1)调用静态链接库
使用静态链接库时(如调用里面的函数),首先要把静态链接库的头文件包含在项目的里(即写#include "xxxx.h")。
方法一:复制头文件及lib文件到该项目下,然后在属性-链接器-输入-附加依赖项里加入xxx.lib。
方法二:(附加)包含目录,就是指定lib的h文件路径,然后在属性-链接器-输入-附加依赖项里加入xxx.lib。
方法三:在代码中,添加 #pragma comment(lib, "XXX.lib") 并且填加相应的xxx.h头文件。
(2).调用动态链接库
静态调用:
首先首先要把库用到的头文件包含在项目的里(即写#include "xxxx.h")。
方法一:复制h文件,lib文件和dll文件到该项目下(即项目的cpp文件同目录下)。,或者将dll放在exe文件的同文件夹里,然后在属性里的附件依赖项里加入xxx.lib。
方式二:(附加)包含目录,就是指定lib的h文件路径,再将xxx.dll复制到你的项里(即项目里有cpp文件的那个目录),或者将dll放在exe文件的同文件夹里,然后在属性里的附件依赖项里加入xxx.lib。
我发现在Qt项目里,只能使用附加包含目录和附件库目录,才有效
动态调用见下面的参考博客
目前以lib后缀的库有两种,一种为静态链接库(Static Libary,以下简称“静态库”),另一种为动态连接库(DLL,以下简称“动态库”)的导入库(Import Libary,以下简称“导入库”)。
静态库是一个或者多个obj文件的打包,所以有人干脆把从obj文件生成lib的过程称为Archive,即合并到一起。比如你链接一个静态库,如果其中有错,它会准确的找到是哪个obj有错,即静态lib只是壳子。动态库一般会有对应的导入库,方便程序静态载入动态链接库,否则你可能就需要自己LoadLibary调入DLL文件,然后再手工GetProcAddress获得对应函数了。有了导入库,你只需要链接导入库后按照头文件函数接口的声明调用函数就可以了。导入库和静态库的区别很大,他们实质是不一样的东西。静态库本身就包含了实际执行代码、符号表等等,而对于导入库而言,其实际的执行代码位于动态库中,导入库只包含了地址符号表等,确保程序找到对应函数的一些基本地址信息。
一般的动态库程序有lib文件和dll文件。lib文件是必须在编译期就连接到应用程序中的,而dll文件是运行期才会被调用的。如果有dll文件,那么对应的lib文件一般是一些索引信息,具体的实现在dll文件中。如果只有lib文件,那么这个lib文件是静态编译出来的,索引和实现都在其中。
参考博客: https://www.cnblogs.com/zqh20145320/p/6772985.html我们在开发过程中,经常会使用别人的库,即静态链接库lib或动态链接库
在引用里引用创建为lib或dll的项目,然后再在该项目属性-包含目录里包含头文件路径(或者把头文件都复制到你的项目cpp文件所在文件里)
此时不用再像前文那样设置库目录了与附加依赖项了,就可以直接在项目cpp文件里包含头文件(即写#include "xxxx.h"),直接调用lib或dll项目里的函数了。