Страницы

Поиск по вопросам

понедельник, 26 ноября 2018 г.

C++ Корневая (текущая) папка программы (указать)

С++ Как задать корневую (текущую) папку для программы, например у меня есть параграмма с файлами картинками (ресурсы программы), но если я откраиваю файл с помощью этой параграммы, программа не находит своих файлов (ресурсов). в итоге Корневая (текущая) директория устанавливается в папке с открытым файлом. А если я просто открываю программу Корневая (текущая) директория устанавливается в папке с программой, и все ресурсы загружаются отлично.
Использую 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)).

Комментариев нет:

Отправить комментарий