c++ - 为什么从桌面运行程序时找不到我的声音文件?

标签 c++ sfml

我正在使用 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 运行程序时,程序按预期运行。
提前致谢。

最佳答案

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

关于c++ - 为什么从桌面运行程序时找不到我的声音文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63063835/

相关文章:

c++ - SFML 中的碰撞不是那么好,如何改进它?

c++ - Sprite 不会在 SFML 中移动

c++ - 如何循环递增和递减26个拉丁字符

c++ - 使用谷歌测试进行测试时出现段错误

c++ - 检测到堆损坏 : after normal block. .. CRT 检测到应用程序在堆缓冲区结束后写入内存

c++ - 在 sfml 中加载纹理

c++ - 在 SFML 顶点数组中组合基元

c++ - 使用 SFML 在第二台显示器上打开全屏窗口?

c++ - 电源按钮和盖子 sleep 定制

c++ - 如何离开循环