Текстовый файл найден только при запуске вне Visual Studio - PullRequest
2 голосов
/ 04 января 2012

У меня есть проект (собственный C ++, скомпилированный в .exe), который прекрасно работает вне VS 2010, но внутри VS (с отладчиком или без него) он застревает, пытаясь найти текстовый файл, расположенный в том же Папка bin как есть.

Есть идеи, почему это произошло? Я догадываюсь, что VS портит, когда код пытается открыть файл, но я не знаю достаточно деталей, чтобы исправить это.

Некоторые детали:

Мой .exe вызывает функцию из DLL, которую я написал ранее, которая, в свою очередь, пытается найти текстовый файл, определяющий параметры этой функции. Для удобства я поместил все эти файлы в одну папку, поэтому найти текстовый файл не составит труда.

Перед открытием файла функция проверяет его наличие с помощью:

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

В VS 2010 эта строка вызывает отображение «Файл параметров не найден», но за пределами VS программе удается найти файл.

Ответы [ 2 ]

4 голосов
/ 04 января 2012

При запуске исполняемого файла из Visual Studio по умолчанию он использует каталог файлов проекта в качестве текущего рабочего каталога. Вы можете изменить это в Свойствах конфигурации -> Отладка -> Рабочий каталог.

Однако я не думаю, что правильно искать файлы данных ваших программ и т. Д. Из текущего рабочего каталога. Вместо этого ваша программа должна найти каталог исполняемого файла и найти файлы в этом каталоге.

1 голос
/ 04 января 2012

Процессы имеют концепцию «текущего каталога», который может совпадать или не совпадать с каталогом, в котором находится файл .exe.Похоже, что когда вы запускаете вашу программу внутри VS, текущий каталог отличается от того, где находится ваш .exe.

Где-то в настройках проекта должно быть место, где вы можете выбрать, какой каталог будеттекущий каталог, когда ваша программа запускается внутри отладчика.Установите это в то же место, что и ваш .exe, и все будет хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...