Вы полагаетесь, что текущий каталог является каталогом, содержащим ваш двоичный файл, но это не всегда так.Вместо этого вы можете сделать это (проверка ошибок и диапазонов опущена для краткости):
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;
Опять же, я упустил проверку ошибок и диапазона для краткости.