Путь к папке активов для программы на c ++ [windows] - PullRequest
0 голосов
/ 26 декабря 2018

Структура моей версии Release моей программы на c ++:

 | bin
 | | game.exe
 | content
 | | sprites
 | | | asset.png

В коде я передаю путь к ресурсу как "../content/sprites/asset.png", ноэто не найдено программой.Что я делаю не так?

Дополнительная информация: я использую SLD2 в качестве вспомогательной библиотеки.

1 Ответ

0 голосов
/ 26 декабря 2018

Вы полагаетесь, что текущий каталог является каталогом, содержащим ваш двоичный файл, но это не всегда так.Вместо этого вы можете сделать это (проверка ошибок и диапазонов опущена для краткости):

WCHAR buf = new WCHAR [32768];   // allow for long path names
GetModuleFileNameW (NULL, buf, 32768);
WCHAR sep = wcsrchr (buf, '\\');
wcscpy (sep + 1, L"..\\content\\sprites\\asset.png");
...
delete [] buf;

Редактировать:

Если вы вызываете код, который зависит от текущего каталогабудучи тем, который содержит ваш двоичный файл, вы можете сделать это вместо этого где-нибудь в вашем коде инициализации:

WCHAR buf = new WCHAR [32768];   // allow for long path names
GetModuleFileNameW (NULL, buf, 32768);
WCHAR sep = wcsrchr (buf, '\\');
*sep = 0;
SetCurrentDirectoryW (buf);
delete [] buf;

Опять же, я упустил проверку ошибок и диапазона для краткости.

...