Я пытаюсь загрузить некоторые изображения в базовую программу на основе C++/SDL. Изображения загружаются с использованием SDL_LoadBMP
. У меня есть загрузка изображения, и все работает отлично. Моя проблема в том, что изображение загружается относительно того, из которого я вызываю программу.Загрузка изображений относительно двоичного файла
Итак, у меня есть структура каталогов, которая выглядит примерно так.
project/
src/
source.cpp
assets/
image.bmp
bin/
program
Когда я выполнить программу из каталога проекта (./bin/program
) он должен использовать путь assets/image.bmp
для загрузки изображения. Есть ли способ, которым я могу использовать относительный путь ../assets/image.bmp
, чтобы программа могла выполняться из любого места?
Я думаю, что мне нужно что-то, что обеспечивает абсолютный путь к программе, к которой я могу добавить свои пути.
Вау, я не думал, что это будет так сложно. Таким образом, простой относительный путь, такой как '../ path' или'./Path', не будет делать? Думаю, мне нужно будет построить или найти хорошую функцию, которая будет работать в большинстве мест. Я нацелен на Linux, но хотел бы иметь возможность перекрестного компиляции позже. – Olical
А как насчет 'basename'? Любая причина, почему это не должно использоваться? http://stackoverflow.com/a/1019557/455137 – Olical
Относительный путь всегда относится к текущему рабочему каталогу, который может быть полностью не связан с каталогом, в котором находится ваш двоичный файл. Если вы в основном ориентированы на Linux, читайте также [раздел 1.14 часто задаваемых вопросов по программированию Unix] (http://www.steve.org.uk/Reference/Unix/faq_2.html#SEC23). Он не рекомендует использовать двоично-относительные пути. – MvG