当先锋百科网

首页 1 2 3 4 5 6 7

今天调试前把输出目录设为了项目下的Debug文件夹下(默认是解决方案目录下Debug下),生成的exe在修改后的目录。当我把两个待读文件放到exe目录,用文件名的方式读取(即相对路径),调试程序竟然读不到。百般测试才发现调试程序把工作目录改了。如果双击exe是没问题的。

参考:https://www.cnblogs.com/qiaozhoulin/p/4509995.html

vs中工作目录的设置是给调试用的,也即你启动调试后,启动一个新进程,自动把这个新进程的工作目录设置为vs项目属性中的工作目录,然后新进程启动对应的exe程序。但是如果不使用vs的调试启动exe,而是直接双击exe文件启动一个新进程时,会自动把这个新进程的工作目录设置为exe文件所在的目录,这是和vs启动调试不同的地方。所以如果发布的时候不把工作目录内的东西拷到exe所在的目录内,就会运行出错,因为此时工作目录不再是vs中设置的了,而是exe文件所在的目录。最后,说一下,vs中默认的vc++工程的工作目录项目的值是空的,代表默认是vs工程所在目录即.vcproj文件所在目录。

(上面加粗部分摘抄)

将工作目录从$(ProjectDir)改为$(ProjectDir)Debug\即可。