0

我最近使用 C++ 和 SDL 库创建了一个程序。最初,所有图像和 DLL 都与主应用程序位于同一文件夹中。我想让主应用程序更容易找到,所以我将所有图像移到了它们自己的文件夹中,并修改了我的源代码以在正确的文件夹中找到它们。到目前为止,一切都很好。主应用程序仍保留在与 DLL 相同的文件夹中。

我创建了主应用程序的快捷方式并将其放在自己的文件夹中。我将目标更改为%windir%\system32\cmd.exe /q/c start "" ""%SystemRoot%\explorer.exe %UserProfile%\Desktop\Cupcake Corner Build 2.0 (exe test)\dependecies\Cupcake Corner。 exe”以尝试创建通用快捷方式,以便该快捷方式适用于我将文件发送到的任何用户。

毕竟,我遇到了一个问题。如果我打开主应用程序本身,它将加载图像并完美运行。如果我尝试通过其快捷方式访问主应用程序,则窗口将正确打开并显示正确的标题,尽管不会加载任何图像。我尝试移动一些文件,看看如果我将资源文件夹放在其他地方,快捷方式是否会看到它们,但到目前为止还没有运气。

图片在这里 -> C:\Users\Admin\Desktop\Cupcake Corner Build 2.0\dependecies\resources
main app/dlls 这里 -> C:\Users\Admin\Desktop\Cupcake Corner Build 2.0\dependecies\
快捷方式在这里 -> C: \Users\Admin\Desktop\Cupcake Corner Build 2.0\

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

4

1 回答 1

0

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

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

std::string myfiles_root_path = FindMyFilesRootPath();

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

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

于 2013-04-15T08:02:36.157 回答