属性页常用配置介绍
参考链接:https://blog.csdn.net/weixin_44084447/article/details/122950875
一、头文件与导入库
VC++目录:
包含目录——寻找#include<xxxx.h>中的xxxx.h的搜索目录;
库目录——寻找.lib文件的搜索目录;
C/C++常规:
附加包含目录——寻找#include<xxxx.h>中的xxxx.h的搜索目录
链接器:
常规-附加库目录——寻找.lib文件的搜索目录
链接器:
输入-附加依赖项:lib库名称
提示:
1、包含目录和附加包含目录的区别:
包含目录:修改了系统的include宏的值,是全局的;
附加包含目录:用于当前项目,对其他项目没有影响。
因此,当需要对某工程添加这些目录时,通常情况下,都是在附加包含目录和附加库目录中添加的。
(库目录和附加库目录的区别同上)
2、如何添加静态库.lib和动态库.dll
(1)要使用一个.lib静态库,除了要include其头文件以外(附加包含目录),还要在链接过程中把lib加进去(附加库目录、附加依赖项)。
附加包含目录—添加工程的头文件目录:
项目->属性->配置属性->C/C+±>常规->附加包含目录:加上头文件的存放目录;
附加库目录—添加文件引用的lib静态库路径:
项目->属性->配置属性->链接器->常规->附加库目录:加上lib文件的存放目录;
附加依赖项—添加工程引用的lib文件名:
项目->属性->配置属性->链接器->输入->附加依赖项:加上lib文件名。
(2)而要使用一个.dll动态链接库时,直接将需要添加的.dll文件放到项目生成的.exe所在的文件夹下即可(项目->属性->配置属性->常规->输出目录,可以看到.exe生成在哪个目录下)。
3、静态库与动态库的区别
库(Library)就是一段编译好的二进制代码,加上头文件就可以供别人使用。
什么时候会用到库呢?
一种情况是某些代码需要给别人使用,但是我们不希望别人看到源码,就需要以库的形式进行封装,只暴露出头文件。另外一种情况是,对于某些不会进行大的改动的代码,我们想减少编译的时间,就可以把它打包成库,因为库是已经编译好的二进制了,编译的时候只需要 Link 链接一下,不会浪费编译时间。
上面提到库在使用的时候需要 Link,Link 的方式有两种,静态和动态,于是便产生了静态库和动态库。
静态库:
静态库即静态链接库(Windows 下的 .lib,Linux 和 Mac 下的 .a)。之所以叫做静态,是因为静态库在编译的时候会被直接拷贝一份,复制到目标程序里。静态库的好处是目标程序没有外部依赖,直接就可以运行。其缺点是会使用目标程序的体积增大。
动态库:
动态库即动态链接库(Windows 下的 .dll,Linux 下的 .so,Mac 下的 .dylib)。动态库在编译时并不会被拷贝到目标程序中,目标程序中只会存储指向动态库的引用。等到程序运行时,动态库才会被真正加载进来。动态库的优点是,不需要拷贝到目标程序中,不会影响目标程序的体积,而且同一份库可以被多个程序使用(因此动态库也被称作共享库)。同时,编译时才载入的特性,也可以让我们随时对库进行替换,而不需要重新编译代码。动态库带来的问题主要是,会使得程序依赖于外部环境。如果环境缺少动态库或者库的版本不正确,就会导致程序无法运行。
二、输出配置
配置属性-常规——主要关注输出目录(OutDir)、目标文件名(TargetName)、配置类型(生成的目标文件类型,可选择.exe/.dll/.lib)
链接器-输出文件——可重写连接器创建的程序的默认名称和位置
链接器-高级-导入库——.lib文件生成的地方(可以理解为导出库)
标签:lib,静态,解决方案,附加,VS,动态,目录,属性 From: https://www.cnblogs.com/fusio/p/17637188.html