C ++程序的资产文件夹路径[windows]

时间:2018-12-25 23:09:11

标签: c++ sld

我的c ++程序的发行版的结构是

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

在代码中,我将资产的路径传递为“ ../content/sprites/asset.png”,但程序找不到该路径。我在做什么错了?

其他信息:我正在使用SLD2作为支持库。

1 个答案:

答案 0 :(得分:0)

您所依赖的当前目录是包含您的二进制文件的目录,但这并不总是正确的。相反,您可以这样做(为简便起见,省略了错误和范围检查):

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;

再次,为了简洁起见,我省略了错误和范围检查。