0

第一个问题,对不起,如果我做的不对: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;
}

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

4

1 回答 1

0

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

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

于 2016-06-28T05:24:33.947 回答