Обнаружение исполняемой папки из SDL
-
20-08-2019 - |
Вопрос
Я создаю игровой движок C ++ SDL, и важно знать путь к исполняемому файлу, поскольку изображения и другие ресурсы хранятся не внутри исполняемого файла - они находятся в отдельной папке ("res /").
В Linux я использую сценарий командной строки "rungame.sh " этот компакт-диск указывает путь к исполняемому файлу, а затем запускает исполняемый файл (используя затем "./" для ссылки на исполняемую папку).Однако я считаю, что это "уродливый" подход, и я хочу, чтобы он был совместим с Windows.
Кроме того, текущий подход не очень хорош, поскольку он может изменить значение некоторых аргументов командной строки.
Мне нужно кроссплатформенное (* NIX, Windows и Mac OS X, если возможно) решение для получения текущего пути к исполняемому файлу.Путь к игре / имя исполняемого файла могут измениться.
Каков самый чистый способ решить мою проблему (предпочтительно с использованием std:: string и как можно меньшего количества зависящих от платформы API)?
Решение
Я настоятельно рекомендую поискать перед публикацией: Как мне получить каталог, из которого запущена программа?
Другие советы
Начиная с SDL 2.0.1, существует SDL_GetBasePath Путь к базе данных.
физические свойства имеет PHYSFS_getBaseDir()
:
Получите путь, по которому находится приложение.
Вспомогательная функция.
Получите "базовый каталог".Это каталог, из которого было запущено приложение который, вероятно, является каталогом установки и может быть или не быть текущим рабочим каталогом процесса.
Вероятно, вам следует использовать базовый каталог в вашем пути поиска.