SDL IMG_loadTexture和其他硬盘

时间:2014-01-15 18:03:37

标签: c++ sdl

我最近开始使用SDL2和c ++开发一个小程序。在这个程序中,我使用IMG_LoadTexture()加载纹理但是它不想工作,程序找不到图像。所以我偶然发现我的程序使用SDL_loadBMP(),但没有用。经过几个小时无休止地寻找虫子,我仍然找不到任何东西。

当我开始我的项目时,我将其保存到我的D:磁盘而不是我的C:磁盘上。因此,当我即将放弃整个项目时,我将我的exe,图像和库复制到我的C:磁盘和Boom它工作。

所以我不知道为什么会这样。我用相对路径引用我的图像,但它不想在我的D:磁盘上工作。这是一个错误吗?或者它可能与我的磁盘相关的设置有关?我怎样才能在我的D:磁盘上运行它?

P.S。我正在使用Windows 7 P.S.S.对于任何可怕的语法和拼写错误,我事先道歉。

1 个答案:

答案 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);
}