我最近开始使用SDL2和c ++开发一个小程序。在这个程序中,我使用IMG_LoadTexture()
加载纹理但是它不想工作,程序找不到图像。所以我偶然发现我的程序使用SDL_loadBMP()
,但没有用。经过几个小时无休止地寻找虫子,我仍然找不到任何东西。
当我开始我的项目时,我将其保存到我的D:
磁盘而不是我的C:
磁盘上。因此,当我即将放弃整个项目时,我将我的exe,图像和库复制到我的C:
磁盘和Boom它工作。
所以我不知道为什么会这样。我用相对路径引用我的图像,但它不想在我的D:
磁盘上工作。这是一个错误吗?或者它可能与我的磁盘相关的设置有关?我怎样才能在我的D:
磁盘上运行它?
P.S。我正在使用Windows 7 P.S.S.对于任何可怕的语法和拼写错误,我事先道歉。
答案 0 :(得分:2)
您可以执行的工作目录是否与您认为的相同?在Windows上发生了不止一次,工作目录不是我认为的路径。对于某些编译器配置,工作目录与可执行文件不同,您必须更改工作目录,查看IDE的文档。
经常发生在我身上
当前工作DIR
D:/projectdir/
预计工作DIR
D:/projectdir/bin/debug/
文件确实在哪里:
D:/projectdir/bin/debug/app.exe
D:/projectdir/bin/debug/texture.png
从IDE启动时,应用程序尝试加载的文件:
D:/projectdir/app.exe
D:/projectdir/texture.png
您可以通过调用Windows上的等效项来快速测试当前工作目录 getcwd(来自here的答案)
#include <WinBase.h>
int main() {
TCHAR pwd[MAX_PATH];
GetCurrentDirectory(MAX_PATH,pwd);
MessageBox(NULL,pwd,pwd,0);
}