【问题标题】:Why is my sound file not being found when I run my program from the desktop?为什么我从桌面运行程序时找不到我的声音文件?
【发布时间】:2020-07-23 22:09:04
【问题描述】:

我正在使用 SFML 制作一个简单的蛇游戏,目前正在尝试添加一种声音,当蛇“吃掉”其中一个点时播放的声音。所以我下载了一个声音文件并将它放在我的项目目录中并将其添加到我的代码中:

sf::SoundBuffer buffer;
buffer.loadFromFile("Crunch.wav")
sf::Sound crunch;
crunch.setBuffer(buffer);
if (snake.isTouching(food))
{
    crunch.play();
}

当我从 Visual Studio 运行游戏时,它运行良好。但是我喜欢把我完成的游戏放在我的桌面上,所以我进入了我的 Debug 文件夹,找到了我的 .exe 文件,创建了一个快捷方式并将它放在我的桌面上。但是每当我尝试使用桌面快捷方式运行程序时,输出窗口上都会显示消息“无法打开声音文件'Crunch.wav'(无法打开流)”。有谁知道是什么原因造成的?当我从 VS 运行程序时,程序按预期运行。 提前致谢。

【问题讨论】:

  • 好像从桌面启动时当前目录不是程序的目录。
  • @SamVarshavchik 那么当前目录是什么?桌面?
  • @JensB 这是您创建的快捷方式中指定的任何路径。进入快捷方式的属性并将“开始于”字段设置为您想要的任何路径。否则,您应该在加载声音文件时更新您的代码以使用绝对路径而不是相对路径。程序可以通过检查由argv[0]main()GetModuleFileName(NULL) 报告的文件名的路径部分来确定其所在文件夹的路径

标签: c++ sfml


【解决方案1】:

loadFromFile() 查看当前目录,当您在 Visual Studio 中构建和运行时,该目录默认为 ProjectName\ProjectName,在这种情况下,您似乎在 .vcxproj 文件旁边的 ProjectName\ProjectName 文件夹中有 Crunch.wav ,因此您应该确保将 Crunch.wav 与 .exe 以与项目文件夹中相同的方式保存,在这种情况下,将 Crunch.wav 复制到与 .exe 相同的位置

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-18
    • 2012-02-27
    • 2014-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-24
    • 2022-11-17
    相关资源
    最近更新 更多