С++ Как задать корневую (текущую) папку для программы, например у меня есть параграмма с файлами картинками (ресурсы программы), но если я откраиваю файл с помощью этой параграммы, программа не находит своих файлов (ресурсов). в итоге Корневая (текущая) директория устанавливается в папке с открытым файлом. А если я просто открываю программу Корневая (текущая) директория устанавливается в папке с программой, и все ресурсы загружаются отлично.
Использую visual studio 2010 ОС: windows 10 x86
Рабочий каталог используется для поиска файлов, заданных с помощью относительного пути.
Текущая директория наследуется программой от её родителя. К примеру, если запустить в командной строке, то по умолчанию программа будет искать файлы относительно текущего пути в командной строчке (pwd
, echo %cd%
).
Если вы запускаете программу вне папки с картинками, то в настройках передайте необходимый путь (в конфигурационном файле, в переменных окружения, в опциях командной строки) и используйте абсолютные пути для открытия файлов (переданный путь + относительный путь). Вот пример, где используется либо путь, заданный в командной строке, либо текущий путь, если не задан путь:
fs::path dirpath = (argc == 2) ? argv[1] : fs::current_path();
Чтобы объединить переданный путь и относительный путь: path = dirpath / relpath
.
Выражение "корневая директория" не имеет отношения к текущей директории (к примеру, chroot(2)
vs. chdir(2)
).
вот пришёл к такому решению благодаря ан пользователю jfs сумел правильно сформулировать поисковый запрос
еще такой парадокс на заметку: когда я в настройках проекта -> компонировщик - дополнительно устанавливаю точку входа "main" аргумент argc ведет себя странно и принимает некоректное значение, и и массив argv становится пустым что приводит к ошибке при запуске.
проект создаётся как пустой;
функция SetCurrentDirectory("путь"); устанавливает текучкою директорию.
#include<string>
#include<Windows.h>
using namespace std;
void main(int argc, char*argv[])
{
//Получить текущую деректорию
//TCHAR buffer[MAX_PATH];
//GetCurrentDirectory(sizeof(buffer),buffer);
//cout << buffer << endl;
if(argc > 0)
{
//получаим путь к програме
string urlK = "";
urlK += argv[0];
//удаляем всё до слеша (название програмы)
while(urlK.size() > 0) { bool br = 0;if(urlK[urlK.size()-1] == '/' || urlK[urlK.size()-1] == '\\'){br = 1;}
urlK.erase(urlK.size()-1); if(br)break; }
//устанавливаем путь к кааталогу с прорамой как основной
SetCurrentDirectory(urlK.c_str());
}
return;
}
Собственно, вопрос следующий: Есть у меня QGraphicsView у которого есть QGraphicsSceneДля QGraphicsScene установлен следующий режим:
Доброе всем время суток, скачал с оф сайта alglib для С++ В инструкции на ОФ сайте сказано что нужно просто подключить h файл и все будет прекрасно,...
Не получается подключить поддержку OpenMP в XcodeПри попытке компиляции любого кода появляется ошибка:
В одном решении у меня находятся два приложения: Статическая библиотека и Консольное приложениеСобрал библиотеку, добавил в консольное...