Я понимаю, что этому вопросу уже пару лет, но я испытывал то же самое и столкнулся с возможным виновником (фактическим виновником в моем случае), который может помочь другим, у кого есть эта проблема.
Одним из важных отличий при запуске приложения в Visual Studio и его запуске вне приложения является текущий рабочий каталог («CWD»).
Типичная структура каталогов для решения / проекта Visual C ++ выглядит следующим образом:
Solution <- the location of your solution file
Debug <- where the Debug executables end up
Release <- where the Release executables end up
Project <- the location of your project file
Debug <- where Debug intermediate files end up
Release <- where Release intermediate files end up
Когда вы запускаете приложение из Studio, либо с помощью «Начать отладку», либо «Запускать без отладки», CWD по умолчанию является каталогом проекта, поэтому в этом случае Solution\Project
.
Однако, когда вы выполняете снаружи простым двойным щелчком по приложению, CWD является каталогом приложения (например, Solution\Debug
).
Если вы пытаетесь открыть файл из текущего каталога (что происходит, когда вы делаете std::ifstream ifstr("myfile.txt")
), успешность его выполнения зависит от того, где вы находились, когда запускали приложение.