С++ Как задать корневую (текущую) папку для программы,
например у меня есть параграмма с файлами картинками (ресурсы программы), но если я откраиваю файл с помощью этой параграммы, программа не находит своих файлов (ресурсов).
в итоге
Корневая (текущая) директория устанавливается в папке с открытым файлом.
А если я просто открываю программу Корневая (текущая) директория устанавливается в папке с программой, и все ресурсы загружаются отлично.
Использую visual studio 2010
ОС: windows 10 x86
Ответ что я ожыдал
функцыя устанавлевает корневую папку SetCurrentDirectory("Путь к корневой папке програмы");
Ответ
Рабочий каталог используется для поиска файлов, заданных с помощью относительного пути
Текущая директория наследуется программой от её родителя. К примеру, если запустить в командной строке, то по умолчанию программа будет искать файлы относительно текущего пути в командной строчке (pwd, echo %cd%).
Если вы запускаете программу вне папки с картинками, то в настройках передайте необходимый путь (в конфигурационном файле, в переменных окружения, в опциях командной строки) и используйте абсолютные пути для открытия файлов (переданный путь + относительный путь). Вот пример, где используется либо путь, заданный в командной строке, либо текущий путь, если не задан путь:
fs::path dirpath = (argc == 2) ? argv[1] : fs::current_path();
Чтобы объединить переданный путь и относительный путь: path = dirpath / relpath
Выражение "корневая директория" не имеет отношения к текущей директории (к примеру, chroot(2) vs. chdir(2)).
Комментариев нет:
Отправить комментарий