VS C++ Project(项目)的工作目录设置
如果只是简单创建一个VS C++Project或者MFC Project,可能很多时候,只关心将Project放在硬盘的那个位置,与Project目录相关的的其他问题,并不引人注意,我们也不是十分在意。有时我们不得不进行工作目录方面的设置,如Project中需要用到OpenCV图像处理库;生成的可执行文件需要在本地磁盘中创建文件,或者需要打开本地·磁盘中的文件等。下面来探讨VS C++ Project工作目录方面的话题。
VS C++ Project的工作目录是Project属性的一部分,查看、修改、设置等都在目录项中进行。下面以用VS 2022 创建的DequeTest Project (对话框程序)为例,演示目录属性的查看与设置。
点击“项目”菜单,然后点击“DequeTest和属性"子菜单:

弹出DequeTest属性页,如下:

在上面的属性页的配置属性项下的常规项中可以看到:输出目录、中间目录两项与目录相关的内容。点击输出目录项后面的向下符号,即可想象展开,看到”编辑“与”浏览“两个选项:

点击”编辑“项,即可看到输出目录,如下:

输出目录中$(SolutionDir)$(Platform)\$(Configuration)\表示编译生成的文件(输出文件)放在Project所在目录下的平台名目录下的配置目录下,本程序是在win10下用VS2022创建,因此平台名是X64,目前Project配置如下:

配置目录名是:Debug
生成的文件路径如下:

修改输出目录如下:

重新生成解决方案:

可以看到在D目录下生成了输出文件:

点击”浏览“选项,则是浏览选择输出目录,缺省是Project所在目录,如下:

同样中间目录也可修改,也有”编辑“与浏览两个选项,如下:

在配置属性的高级选项中有一项有提到输出目录,如下:

”将C++运行时复制到输出目录“,是什么意思?先不管它,其缺省值是否,将其改为是,如下:

重新生成,看下结果如何。可以看到D目录下多了很多dll文件,如下:

实际上是将VC++ runtime的1相关文件复制到了输出目录中。一般情况下,不需要将此项选为:”是“,如果的确需要VC运行库,可以在程序文件打包时打包VC运行库,在程序安装时,让其安装VC运行库。
点击配置属性相下的”调试“项,可以看到工作目录一栏,如下:

将其展开,同样也有”编辑“与”浏览“两个选项,可用这两个选项对其进行修改。

点击编辑,在弹出的工作目录对话框中可以看到当前工作目录:

也可在这个对话框中对工作目录进行修改。这里不对其修改。
展开”VC++目录“项,可以看到很多与目录有关得到项目:

这些目录项,都是可以编辑或者配置的。其编辑或配置需依实际需求进行。一般情况下不要随意修改,否则可能否导致出错。例如本示例项目需要用到OpenCV,就需要配置”包含目录“与库目录。包含目录配置是指出包含内容所在目录,DequeTest Project的配置如下:

DequeTest Project的库目录配置是指出OpenCv库所在目录,其配置如下:

上面探讨了与Project工作目录及相关目录的配置。如果程序要打开工作目录中的文件,需要如何配置路径呢?例如,如果要为本示例的对话框中的打开,按钮添加代码要打开工作目录中的图像文件要如何设置文件路径呢?

现在来为”打开“按钮来添加事件处理程序,在添加代码前先将一个图像文件Copy到Project目录下,因为该目录即为Project的工作目录。如下:

添加”打开”按钮事件处理程序的代码如下:
void CDequeTestDlg::OnBnClickedOpen()
{Mat src = imread("1.tif");if (src.empty())MessageBox(L"无法打开图像!");else{MatToCImage(src, mImage);DispalyImage(mImage);}
}
由于图像文件已经放在其工作目录中,所以不需要要特别指出文件所在目录。上面代码中用到了两个函数:MatToCImage与DisplayImage,这里两个函数事先已写好,因与本文主题无关,这里不特别做说明。试运行,结果如下:

点击“打开”按钮,结果如下:

已正常打开图像。因.\\也是表示当前目录(相对路径表示法),上面的代码修改如下, 也应该可以正常打开图像。
void CDequeTestDlg::OnBnClickedOpen()
{//Mat src = imread("1.tif");Mat src = imread(".\\1.tif");if (src.empty())MessageBox(L"无法打开图像!");else{MatToCImage(src, mImage);DispalyImage(mImage);}
}
试运行,再点击打开,结果如下:

确实能够正常打开。
如果程序编译成了可执行的exe文件,exe程序文件的工作目录又是哪个目录?当然是可执行的exe文件所在目录。将可执行的exe文件与图像文件放在同一目,如下:

以管理员身份运行程序,点击打开,结果如下:

可以正常打开。如果将“打开”的源代码改为如下:
void CDequeTestDlg::OnBnClickedOpen()
{//Mat src = imread("1.tif");//Mat src = imread(".\\1.tif");Mat src = imread("..\\1.tif");if (src.empty())MessageBox(L"无法打开图像!");else{MatToCImage(src, mImage);DispalyImage(mImage);}
}
则图像文件则需要放在生成的可执行exe文件的上级文件夹中,否则无法打开。将上面Release文件夹中的可执行文件用新生成的文件替代。试运行,点击打开,结果如下:

将图片移动到上级文件夹中。如下:

试运行,点击打开,结果如下:

有关VS C++的工作目录设置就探讨到这里,需要说明的是:如果没有修改Project的工作目录,Project的工作目录就是Project的的所在目录,生成的可执行的exe文件的工作目录是其所在目录,即将生成的可执行的exe文件Copy到哪个目录下,这个目录就变成了生成的可执行的exe程序文件的工作目录,如果该程序文件选打开文件,文件的相对位置必须正确。
相关文章:
VS C++ Project(项目)的工作目录设置
如果只是简单创建一个VS CProject或者MFC Project,可能很多时候,只关心将Project放在硬盘的那个位置,与Project目录相关的的其他问题,并不引人注意,我们也不是十分在意。有时我们不得不进行工作目录方面的设置…...
STM32自定义协议串口接收解析指令程序
1、在使用串口接收自定义协议指令时,需要串口解析收到的是什么指令,举例通信报文为 上位机->单片机 名称 长度 备注 帧头 1Byte 0x5A 0x5A 帧长度 1Byte 数据包的长度0x00-0xFF 数据包 命令字 1Byte 功能标识 数据 可以为空 校验 …...
STM32——GPIO(点亮LEDLED闪烁)
一、什么是GPIO? GPIO(通用输入输出接口): 1.GPIO 功能概述 GPIO 是通用输入/输出(General Purpose I/O)的简称,既能当输入口使用,又能当输出口使用。端口,就是元器件…...
VulnHub靶机入门篇--kioptrix.level 3
1.环境准备 靶机:Kioptrix Level 3(Nat模式) 下载地址:https://download.vulnhub.com/kioptrix/KVM3.rar 攻击机:kali(192.168.26.128)(Nat模式) 2.渗透测试 信息收…...
aiGPT系统源码★重大升级★AI写作/AI绘画/AI音乐/AI视频
亲爱老铁们好,又一段时间未更新内容了,我依然是爱你们的神点妹,今天点妹给大家带来一波新的福利:咱们用的aiGPT经过攻城师们近半年来夜以继日的技术升级,今天终于迎来了新版上线首秀。此次升级内容包含:首先…...
Vue Router高级用法:动态路由与导航守卫
Vue Router是Vue.js官方的路由管理器,它和Vue.js的核心深度集成,让构建单页应用变得轻而易举。 动态路由 动态路由允许你在路由路径中使用变量,这些变量可以从实际的URL中获取,并传递给对应的路由组件。 定义动态路由 在route…...
江科大/江协科技 STM32学习笔记P9-11
文章目录 OLED1、OLED硬件main.c EXTI外部中断1、中断系统2、中断执行流程图3、STM32中断4、中断地址的作用5、EXTI6、EXTI基本结构7、AFIO复用IO口8、EXTI框图或门和与门 9、旋转编码器介绍10、硬件电路 OLED 1、OLED硬件 SCL和SDA是I2C的通信引脚,需要接在单片机…...
【培训通知】成为Power BI数据分析可视化实战第一人,加入3天直播即可
Power BI数据分析可视化实战课程培训是一门旨在提升学员在数据分析与可视化领域能力的专业课程。以下是对该培训课程的详细介绍: 一、课程概述 Power BI 是一种业务分析服务,能够提供深入的见解,帮助用户实现快速、明智的决策。该课程通过实…...
24暑假算法刷题 | Day22 | LeetCode 77. 组合,216. 组合总和 III,17. 电话号码的字母组合
目录 77. 组合题目描述题解 216. 组合总和 III题目描述题解 17. 电话号码的字母组合题目描述题解 77. 组合 点此跳转题目链接 题目描述 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1: 输…...
一篇文章告诉你对讲机为什么不能被手机取代的7个原因
在智能时代,手机几乎无处不在,涵盖了从基本通信到多媒体娱乐的一切功能。然而,即使在这种情况下,对讲机仍然没有被完全取代。这不仅仅是出于怀旧或专业需求,还有许多实质性的原因使得对讲机在特定领域和情况下仍然保持…...
LION论文阅读
一、论文主要出发点 3D目标检测的性能受限于3D卷积的局部感受野。 Transformer在3D检测领域效果很好,但由于算力限制,已有的工作在pillar内,或将voxel分组在组内进行特征交互,阻碍了他们捕捉更远程的依赖关系。 线性RNN算子的计…...
在Android上实现汉字笔顺动画效果——HanZiWriter
序,万般皆是命,半点不由人。 Hanzi Writer 是 javascript 免费开源库,根据汉字书写时按照笔画顺序的特征,可以播放正确笔画顺序的描边动画和练习测试。支持简体字和繁体字。可以让全球用户能够通过手绘模仿的方式来学习和练习书写…...
黑马头条vue2.0项目实战(一)——项目初始化
1. 图标素材(iconfont简介) 制作字体图标的工具有很多,推荐使用:iconfont-阿里巴巴矢量图标库。 注册账户 创建项目 可以根据项目自定义 class 前缀 上传图标到项目 生成链接,复制 css 代码,在项目中使用…...
Unity Shader动画:用代码绘制动态视觉效果
在Unity中,Shader是运行在GPU上的小程序,用于控制顶点和像素的渲染过程。通过编写自定义Shader,开发者可以创造出各种令人惊叹的动画效果,从简单的颜色变化到复杂的流体模拟。本文将探讨如何使用Unity Shader来实现动画效果。 Sh…...
智税集成2.0生成凭证
:::info 💡 整体业务流程 从A9服务器中取数,生成列表数据,写入到对方oracle数据库中。 ::: 项目关键点 1.连接数据库 左连接连接本地SQLserver数据库、右连接要链接A9开票服务器的数据库然后设想用SQLserver 自带的外部连接来连接oracle数据…...
B4005 [GESP202406 四级] 黑白方块 【暴力枚举】【前缀和】
#include<bits/stdc.h> using namespace std; int n,m,ans,tmp; char mp[20][20]; int cheak(int a,int b,int c,int d){//a<c b<dint cnt0;//枚举矩阵中的每个点 for(int ia;i<c;i)for(int jb;j<d;j)if(mp[i][j]1) cnt;//统计黑格的个数 return 2*cnt(c-a1…...
深度学习趋同性的量化探索:以多模态学习与联合嵌入为例
深度学习趋同性的量化探索:以多模态学习与联合嵌入为例 参考文献 据说是2024年最好的人工智能论文,是否有划时代的意义? [2405.07987] The Platonic Representation Hypothesis (arxiv.org) arxiv.org/abs/2405.07987 趋同性的量化表达 …...
决策树与随机森林:比较与应用场景分析
决策树与随机森林:比较与应用场景分析 引言 决策树和随机森林是机器学习中广泛使用的两种算法,因其简单性和强大的功能而被广泛采用。决策树是一种树形结构的决策模型,易于理解和解释。随机森林则是通过集成多棵决策树来提高预测性能的模型…...
C#用Aspose.Cells导出Excel,.NET导出Excel
ASP.NET MVC 控制器里面Action处理,下载文件,输出文件流 public async Task<ActionResult> ExportNewsAuthorFee(string deptId, DateTime? startDate, DateTime? endDate){if (startDate null){startDate DateTime.Parse(DateTime.Now.Year …...
天猫番茄品类TOP1,复购率超40%,「一颗大」如何策划极致产品力?
桔子要买什么品牌?桃子买什么品牌?土豆买什么品牌?过去人们购买农产品几乎没有品牌意识。但近年来可能某些人买猕猴桃时会考虑佳沛,这是一个在全球达到30%猕猴桃市场的新西兰品牌。与此类似,一个国产品牌「一颗大™」正…...
避开这些坑!医疗内窥镜Zemax优化时的高温灭菌与弯曲成像难题解决指南
医疗内窥镜光学系统设计实战:高温灭菌与弯曲成像的Zemax解决方案 在微创手术和工业检测领域,直径仅2.8mm的医疗内窥镜需要同时满足140广角视场、F2.0大光圈和10μm高分辨率的要求。更严峻的挑战来自使用环境——必须耐受135℃高温蒸汽灭菌,并…...
nli-distilroberta-base代码实例:Python调用DistilRoBERTa实现Entailment识别
nli-distilroberta-base代码实例:Python调用DistilRoBERTa实现Entailment识别 1. 项目概述 自然语言推理(Natural Language Inference, NLI)是自然语言处理中的一项重要任务,用于判断两个句子之间的逻辑关系。nli-distilroberta-base是基于DistilRoBER…...
大模型私有化不是选型,是生存!Python工程师必须在Q3前掌握的5类国产化适配方案,否则明年项目全卡审批
第一章:大模型私有化是Python工程师的生存分水岭当企业开始将大语言模型从公有云API转向本地GPU集群部署,Python工程师的角色正经历一次静默但深刻的重构——不再只是调用requests.post()封装接口,而是要亲手构建模型加载、推理服务、权限控制…...
CentOS7 下 Go 多版本管理与无缝升级指南
1. 为什么需要Go多版本管理? 在CentOS7系统上开发Go项目时,经常会遇到这样的尴尬:新项目需要用最新版Go的特性,而老项目必须跑在特定旧版本上才能兼容。我去年就踩过这个坑——用Go 1.21写完的微服务,部署到生产环境发…...
颠覆PDF转换体验:Marker无缝实现25页/秒全场景文档格式精准迁移
颠覆PDF转换体验:Marker无缝实现25页/秒全场景文档格式精准迁移 【免费下载链接】marker 一个高效、准确的工具,能够将 PDF 和图像快速转换为 Markdown、JSON 和 HTML 格式,支持多语言和复杂布局处理,可选集成 LLM 提升精度&#…...
微信无法登录时的恢复操作
本文记录 OpenClaw 中 openclaw-weixin 插件在登录态丢失、微信链接不可用、扫码登录失败时的恢复流程。2026-03-23 版本 OpenClaw 更新后曾出现微信插件失效,但在 2026-03-24 版本中已恢复。本文目标是先判断问题类型,再选择最小影响的修复方式,避免不必要的全量重装。 一、…...
AceCommon:Arduino嵌入式零堆分配轻量C++工具库
1. AceCommon 库概述:面向嵌入式 Arduino 的轻量级底层工具集AceCommon 是一个专为资源受限的微控制器平台(尤其是 Arduino 生态)设计的零依赖、低开销 C 工具库。其核心设计哲学是“小而精、无侵入、可复用”。与常见的功能臃肿、依赖繁杂的…...
HarmonyOS 5 + UniApp 真机调试保姆级教程:从HBuilderX配置到ArkUI Inspector查错
HarmonyOS 5 UniApp 真机调试全流程实战指南 第一次在HarmonyOS设备上调试UniApp应用时,我盯着HBuilderX里那个灰色的"运行到鸿蒙设备"按钮整整半小时。设备明明连着USB线,开发者模式也开了,但工具就是识别不到我的MatePad Pro。…...
LxgwWenkaiGB:合规开源字体的专业应用指南
LxgwWenkaiGB:合规开源字体的专业应用指南 【免费下载链接】LxgwWenkaiGB An open-source Simplified Chinese font derived from Klee One. 项目地址: https://gitcode.com/gh_mirrors/lx/LxgwWenkaiGB LxgwWenkaiGB(霞鹜文楷 GB)作为…...
SpringBoot+Vue实战:手把手教你搭建社区居民健康档案管理系统(附完整源码)
SpringBootVue实战:从零构建社区居民健康档案管理系统 在数字化转型浪潮下,社区卫生服务正经历着从纸质档案到智能化管理的转变。对于Java开发者而言,这不仅是技术练兵的好机会,更是解决实际社会需求的切入点。本文将带你用Spring…...
