仅在Visual Studio外部运行时才能找到文本文件

时间:2012-01-04 07:09:46

标签: c++ visual-studio-2010 visual-c++ file-io

我有一个项目(原生C ++编译为.exe)在VS 2010之外运行良好,但在VS内部(有或没有调试器)它会卡住试图找到位于同一个文本文件中的文本文件bin文件夹就好了。

关于为什么会发生这种情况的任何想法?我的预感是VS在尝试打开文件时看到代码所在的位置,但我不知道足够的细节来纠正这个问题。

一些细节:

我的.exe从我之前写的.dll调用一个函数,后者又试图找到一个指定该函数参数的文本文件。为方便起见,我已将所有这些文件放在同一个文件夹中,因此查找文本文件不会有问题。

在打开文件之前,该函数使用以下命令检查它是否存在:

PersistentAssert(Utility::FileExists(Filename), "Parameter file not found");

在VS 2010中,此行会显示“找不到参数文件”,但在VS之外,程序会设法找到该文件。

2 个答案:

答案 0 :(得分:4)

默认情况下,从visual studio启动可执行文件时,它会将项目文件目录用作当前工作目录。您可以在配置属性中更改它 - >调试 - >工作目录。

但是我不认为从当前工作目录中搜索程序数据文件等是正确的行为。相反,您的程序应该找到可执行文件的目录并找到该目录中的文件。

答案 1 :(得分:1)

进程具有“当前目录”的概念,其可能与.exe文件所在的目录相同或不同。听起来就像在VS中运行程序一样,当前目录不是.exe所在的目录。

在项目设置的某个地方,应该有一个地方,当程序在调试器内启动时,您可以选择当前目录的目录。将其设置为与.exe相同的位置,您应该做得很好。