我最近用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
是应用程序本地文件的名称。