《VS篇》解决方案的属性页

属性页常用配置介绍

参考链接:https://blog.csdn.net/weixin_44084447/article/details/122950875

一、头文件与导入库

VC++目录:
包含目录——寻找#include<xxxx.h>中的xxxx.h的搜索目录;
库目录——寻找.lib文件的搜索目录;

image

C/C++常规:
附加包含目录——寻找#include<xxxx.h>中的xxxx.h的搜索目录

image

链接器:
常规-附加库目录——寻找.lib文件的搜索目录

image

链接器:
输入-附加依赖项:lib库名称

image

提示:
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)。动态库在编译时并不会被拷贝到目标程序中,目标程序中只会存储指向动态库的引用。等到程序运行时,动态库才会被真正加载进来。动态库的优点是,不需要拷贝到目标程序中,不会影响目标程序的体积,而且同一份库可以被多个程序使用(因此动态库也被称作共享库)。同时,编译时才载入的特性,也可以让我们随时对库进行替换,而不需要重新编译代码。动态库带来的问题主要是,会使得程序依赖于外部环境。如果环境缺少动态库或者库的版本不正确,就会导致程序无法运行。
image

二、输出配置

配置属性-常规——主要关注输出目录(OutDir)、目标文件名(TargetName)、配置类型(生成的目标文件类型,可选择.exe/.dll/.lib)
image

链接器-输出文件——可重写连接器创建的程序的默认名称和位置
image

链接器-高级-导入库——.lib文件生成的地方(可以理解为导出库)

image

posted @   Fusio  阅读(256)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示
目录导航
目录导航
《VS篇》解决方案的属性页
属性页常用配置介绍
一、头文件与导入库
二、输出配置
发布于 2023-08-17 11:34