为什么SDL不加载我的图像时,主应用程序通过快捷方式访问



我最近用c++和SDL库创建了一个程序。最初,所有的映像和dll都在与主应用程序相同的文件夹中。我想让主应用程序更容易找到,所以我将所有图像移到它们自己的文件夹中,并修改源代码,以便在正确的文件夹中找到它们。到目前为止,一切顺利。主应用程序仍然与dll保存在同一个文件夹中。

我创建了一个快捷方式到主应用程序,并把它自己的文件夹。我将目标更改为%windir%system32cmd.exe/q/c start " "%SystemRoot%explorer.exe %UserProfile%DesktopCupcake Corner Build 2.0 (exe test)依赖Cupcake Corner.exe",试图创建一个通用的快捷方式,以便该快捷方式适用于我发送文件的任何用户。

说了这么多,做了这么多,我还是遇到了问题。如果我打开主应用程序本身,它将加载图像并完美地工作。如果我尝试通过其快捷方式进入主应用程序,窗口将正确打开并显示正确的标题,尽管没有图像将加载。我试着移动一些文件,看看如果我把资源文件夹放在其他地方,快捷方式是否会看到它们,但到目前为止还没有运气。

images here -> C:UsersAdminDesktopCupcake Corner Build 2.0 dependencies resources
主app/dll在这里-> C:UsersAdminDesktopCupcake Corner Build 2.0 dependencies
这里的快捷方式-> C:UsersAdminDesktopCupcake Corner Build 2.0

我使用的是Microsoft Visual Studio Express 2010。我认为这与我在项目选项中设置项目目录的方式有关,但在这一点上我真的很困惑。有人能给我指个方向吗?

通常,在处理应用程序中的文件时(至少应用程序内部知道),您将希望具有绝对路径。

解决这个问题的最好方法是使用一个(一组)函数来添加绝对路径(由GetModuleFilename(0, ...)找到或从某些配置中找到,例如在注册表中)

std::string myfiles_root_path = FindMyFilesRootPath();

std::string MakeFullPath(const std::string &filename){返回myfiles_root_path + filename;}

函数FindMyFilesRootPath()使用上述方法之一来查找适当的路径,filename是应用程序本地文件的名称。

相关内容

最新更新