登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
博客
发1篇日志+1圆
记录
发1条记录+2圆币
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
VIP网盘
VIP申请
网盘
联系我们
道具
勋章
任务
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
【笔记】Visual Studio 2022 入门指南
【笔记】Visual Studio 2022 入门指南
[ 复制链接 ]
烯八
2025-7-30 01:02:23
Visual Studio 2022 入门指南
目录
Visual Studio 2022 入门指南
解决方案(Solution)与项目(Project)
过滤器(Filter)
如何正确配置包含目录?
宏(Macro)
示例
库的使用
静态库(Static Library,.lib)
创建
使用
引用
手动配置(不推荐)
动态链接库(Dynamic Link Library,.dll)
使用 CMake 自动生成解决方案
手动配置
原生支持
参考资料
解决方案(Solution)与项目(Project)
一个
解决方案
是用于组织和管理一个或多个相关联
项目
的容器。这套结构旨在将一个复杂的实际问题,分解成多个功能独立的
模块
(
项目
)来开发和管理。
解决方案
(.sln 文件):这是最高层级的组织单位,它定义了所包含的项目以及它们之间的依赖关系和构建配置。当你打开一个 .sln 文件时,Visual Studio 会加载整个工作区。
项目
(.vcxproj、csproj 等文件):每个项目对应一个独立的模块,最终会生成一个可执行文件(.exe)、一个静态库(.lib)或一个动态链接库(.dll)。
需要注意的地方:
单一启动项目
:在一个解决方案中,通常只有一个项目被设置为
启动项目
。
启动项目
是点击 “开始调试”(F5)时,Visual Studio 将会编译和运行的项目。可以在
解决方案资源管理器
中右键点击不同的项目,选择 "
设为启动项目
"。
“
将解决方案和项目放在同一目录中
”:
勾选:解决方案文件(.sln)和项目文件(例如 .vcxproj)会存放在同一个文件夹中。这对于只有一个或少数几个项目的简单解决方案来说,目录结构更扁平、更清晰。
不勾选(默认):Visual Studio 会创建一个顶层文件夹来存放解决方案文件(.sln),然后在该文件夹下为每一个项目再创建一个独立的子文件夹。当解决方案包含多个项目时,这种结构更加有条理,是
更推荐的做法
。
过滤器(Filter)
过滤器
(
Filter
)是 Visual Studio 解决方案资源管理器中的一个
虚拟文件夹结构
。它的主要作用是帮助开发者组织和分类源文件、头文件等,使项目看起来更整洁,所有的代码文件(源文件和头文件)都应该加入过滤器中。开发者可以自由地创建、重命名或删除过滤器,这
不会
影响磁盘上文件的实际位置。
而对于编译器(例如 MSVC、GCC 等)在编译代码时,只关心真实的目录结构,而非
过滤器
中的配置。所以当编译器报错 “无法打开源文件” 或 “找不到头文件” 之类的错误时,问题几乎总是出在
项目属性
的路径配置上,而不是解决方案资源管理器的过滤器结构。
如何正确配置包含目录?
当项目需要引入外部头文件(例如来自另一个项目货第三方库)时,必须明确告知编译器去哪里查找这些文件。
在
解决方案资源管理器
中右键点击项目,选择
属性
。
确保顶部的
配置
和
平台
设置正确。
导航到
C/C++
\(\rightarrow\)
常规
。
在
附加包含目录
字段中,添加所需头文件所在的
真实目录路径
。
在 Visual Studio 中选择的目录会被设置为
绝对路径
,当
解决方案
发生移动,或者发送给合作者时,就会导致错误。这可以通过 Visual Studio 中提供的
宏
来解决。
宏(Macro)
Visual Studio 提供了一系列预定义的
宏
(
Macro
),这些宏会在构建时被动态地解析为具体的路径。
常用宏变量:
宏描述$(SolutionDir)解决方案文件(.sln)所在的目录$(ProjectDir)当前项目文件(.vcxproj)所在的目录$(OutDir)最终输出文件(如 .exe、.dll)的存放目录$(IntDir)编译过程中产生的中间文件(如 .obj)的存放目录$(Configuration)当前的构建配置名称,如 Debug 或 Release$(Platform)当前的构建平台名称,如 x64 或 Win32
示例
假设解决方案目录结构如下:
MySolution/
├── MySolution.sln
├── ProjectA/
│ └── ProjectA.vcxproj
└── Libraries/
└── MyLib/
└── include/
└── my_header.h
复制代码
如果 ProjectA 需要包含 my_header.h,则可以在 ProjectA 的 “附加包含目录” 中设置为:$(SolutionDir)\Libraries\MyLib\include。
这样一来,即使将整个 MySolution 文件夹移动到其他位置,这个相对路径依然有效。
库的使用
静态库(Static Library,.lib)
静态库是在
链接阶段
被并入到目标程序中的。最终生成的可执行文件会包含静态库的所有代码,因此文件体积较大,但运行时不依赖外部文件。
创建
在解决方案中右键点击 “解决方案” \(\rightarrow\) 添加 \(\rightarrow\) 新建项目 \(\rightarrow\) 静态库
使用
引用
在需要使用此库的项目上,右键点击
引用
选择
添加引用
,然后在弹出的对话框中勾选所需的静态库项目
这是推荐的方式,原因如下:
它会自动设置
链接器
的输入,确保链接器能够找到库文件
它会自动创建
项目依赖项
,保证在编译主项目之前,静态库项目总是被优先编译
它还会自动将静态库的头文件目录添加到主项目的
附加包含目录
中,让开发者能够直接 #include
手动配置(不推荐)
如果引用的库是一个已经编译好、非解决方案内的 .lib 文件,则需要手动配置:
附加库目录
:在项目属性的
链接器
\(\rightarrow\)
常规
中,添加 .lib 文件所在的目录。
附加依赖项
:在项目属性的
链接器
\(\rightarrow\)
输入
中,添加 .lib 文件的具体名称(例如 libtest.lib)
动态链接库(Dynamic Link Library,.dll)
动态库是程序
运行时
由操作系统加载到内存中的。多个程序可以共享同一个 DLL,从而节省磁盘空间和内存。项目生成时会同时产生一个 .dll 文件(运行时需要)和一个 .lib 文件(链接时需要)。
注意事项:
导出与导入:从 DLL 中暴露函数或类给其他项目使用,需要使用 __declspec(dllexport) 关键字。而在使用该 DLL 的项目中,则需要使用 __declspc(dllimport) 来声明这些函数或类。
运行时环境:当运行依赖于 DLL 的程序时,操作系统必须能够找到这个 .dll 文件。通常由以下几种方式:
将 .dll 文件放置在与可执行文件(.exe)相同的目录下
将 .dll 文件所在的目录添加到系统的 PATH 环境变量中。
在 Visual Studio 中进行调试时,它通常会自动处理好路径问题。
使用 CMake 自动生成解决方案
对于跨平台项目或大型复杂项目,直接使用 Visual Studio 的项目文件进行管理可能会变得非常繁琐。CMake 是一个强大的、开源的构建系统生成工具,它可以根据简单的配置文件(CMakeLists.txt)自动生成适用与多种平台和 IDE 的原生构建环境,包括 Visual Studio 的 .sln 和 .vcxproj 文件。
手动配置
为项目的根目录以及各个子模块(库、可执行文件)编写 CMakeLists.txt 文件。
创建一个独立的构建目录(通常命名为 build),以保持源码树的干净。
在 build 目录中运行 CMake,指令通常为 cmake ..,它会查找上一级目录的 CMakeLists.txt 并生成构建文件。
最后,用 Visual Studio 打开在 build 中生成的 .sln 文件。
原生支持
从 Visual Studio 2017 开始,Visual Studio 提供了对 CMake 的原生集成支持。
可以直接用 Visual Studio 打开一个包含 CMakeLists.txt 的文件节哀,而无需手动运行 cmake 命令和打开生成的 .sln 文件。Visual Studio 会自动在后台完成这一切,并提供完整的智能提示、构建和调试支持。
这对于使用 CMake 的项目来说,是目前最便捷的开发方式。
参考资料
工程课代表——Visual Studio 工程实践开发
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
代码
科技
安全
签约作者
程序园优秀签约作者
发帖
烯八
2025-7-30 01:02:23
关注
0
粉丝关注
18
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
敖可
9984
黎瑞芝
9990
杭环
9988
4
猷咎
9988
5
凶契帽
9988
6
接快背
9988
7
氛疵
9988
8
恐肩
9986
9
虽裘侪
9986
10
里豳朝
9986
查看更多