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

标签 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 之外,程序设法找到该文件。

最佳答案

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

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

关于c++ - 仅在 Visual Studio 外部运行时才能找到文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8723246/

相关文章:

C++ 将值添加到堆栈下标需要数组或指针类型和警告

c++ - Linux 管道、fork 和 execlp : how to get the value written into stream 1

c++ - 如何找到具有特定窗口样式的窗口? (WS_CHILDWINDOW)

c++ - 重载 operator= 和重载复制构造函数有什么区别?

c++ - 如何在编译时检查函数是否在全局范围内声明

c# - 可移植 C# IDE/编译器?

c# - 如何在文本文件中写入所有构建细节

sql-server-2005 - 在 Visual C++ 中执行查询的最简单方法是什么

c++ - 警告 C6269 : Possibly incorrect order of operations: dereference ignored

linux - 将音频从 Windows 输出设备流式传输到 Linux