PlaySound()函数不会播放声音

时间:2016-06-26 19:12:52

标签: c++ audio playsound

第一个问题,对不起,如果我做不对的话:S。在播放在控制台窗口中创建的游戏时,我正在尝试循环播放背景音轨。这是小组项目的一部分。游戏运行正常,但我无法使用PlaySound()函数播放音轨。这是我试图找出问题的测试程序。

#include <iostream>
#include <windows.h>
#include <mmsystem.h>

using namespace std;

int main()
{

    PlaySound(TEXT("D:\\CodeBlocks:\\Programming Work:\\SoundTest:\\castor.wav"), NULL, SND_FILENAME|SND_ASYNC|SND_LOOP);
    if(PlaySound(TEXT("D:\\CodeBlocks:\\Programming Work:\\SoundTest:\\castor.wav"), NULL, SND_FILENAME|SND_ASYNC|SND_LOOP))
    {
        cout << "It's Working." << endl;
    }
    else
    {
        cout << "It's not working." << endl;
    }
    cout << "Hello world!" << endl;

    return 0;
}

我的测试用例返回true(或“它正在工作。”),当我在学校计算机实验室中尝试它时,它将循环默认的Windows错误音,当函数找不到您指定的文件时播放,即使我已经给它整个文件路径。我无法弄清楚为什么它找不到文件,我已经四倍检查它实际上位于我编写文件路径的位置,它似乎仍然无法找到它。我已经尝试将.mp3和.wav格式用于音频文件。有谁知道发生了什么? (注意:链接器需要为此提供winmm库)

1 个答案:

答案 0 :(得分:0)

谢谢大家,我发现了实际的问题,它甚至都不是代码。原来我的音频文件(castor.wav)实际上并不是wav格式,这是PlaySound()函数所要求的,即使计算机告诉我它是.wav(即使我显示了文件的属性,它说它是用wav格式的。)

这是因为我试图通过简单地将.mp3改为.wav来转换为.mp3,应该已经知道了。使用实际的转换程序(并删除确切的文件路径并简单地给它TEXT(“castor.wav”)后,它就像一个魅力。感谢您的帮助!