我的c ++程序的发行版的结构是
| bin
| | game.exe
| content
| | sprites
| | | asset.png
在代码中,我将资产的路径传递为“ ../content/sprites/asset.png”,但程序找不到该路径。我在做什么错了?
其他信息:我正在使用SLD2作为支持库。
答案 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;
再次,为了简洁起见,我省略了错误和范围检查。