Структура моей версии Release моей программы на c ++
| bin
| | game.exe
| content
| | sprites
| | | asset.png
В коде я передаю путь к ресурсу как «../content/sprites/asset.png», но он не найден программой. Что я делаю неправильно?
Дополнительная информация: я использую SLD2 в качестве вспомогательной библиотеки.
Вы полагаетесь, что текущий каталог является каталогом, содержащим ваш двоичный файл, но это не всегда так. Вместо этого вы можете сделать это (проверка ошибок и диапазонов опущена для краткости):
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;
Опять же, я пропустил проверку ошибок и диапазона для краткости.
Других решений пока нет …