播放一个 .wav 文件

3

我正在使用Visual Studio 2010 Express,并尝试编写一个简单的程序,将一个波形文件重复播放5次(我的操作系统是Windows XP SP3)。

现在我已经完成了以下步骤:

#include "stdafx.h"
#include <windows.h>
#include <iostream>

using namespace std;   
int main ()
{
    int a = 5;
        while(a >= 1){
            cout << "It's a wav file";
            PlaySound(L"SomeAudioFile-01.wav", NULL, SND_FILENAME);
            --a;
        }
    return 0;
 }

问题是我在构建它时一直收到此错误消息:
1>------ 开始构建: 项目: It's a F**king Country, 配置: Release Win32 ----
1>  mycode.cpp
1>..\..\..\..\..\Shaul's documents\Visual Studio 2010\Projects\MyProject\Release\SomeAudioFile-01.wav : 致命错误 LNK1136: 文件无效或损坏
========== 构建: 成功 0,失败 1,最新 0,跳过 0 ==========
文件完好无损,在visual studio之外没有任何问题。
真的需要帮助。

2
根据MSDN的说法,你应该使用PlaySound(TEXT("filePath.wav"), NULL, SND_FILENAME);。 你可以在这里阅读更多信息。 - guanabara
尝试清理解决方案并重新构建它。 - Mihai8
3
我很惊讶在Windows上It's a F**king Country是一个有效的文件名。 - tenfour
3个回答

5

不要将WAV文件添加到项目文件中,而是将其添加到资源中,并使用SND_RESOURCE替代SND_FILENAME


4
你将声音文件包括为对象文件,因此编译器试图链接它。但它是一个不可链接的二进制文件(这就是错误消息所说的内容)。
不要在项目中包含声音文件,这样环境就不会与其链接。
附注:今后请不要在像这样的公共网站上使用“坏”单词。

0
为了消除链接器错误,你需要告诉集成开发环境(IDE)也要与winmm.lib库进行链接,因此打开Project/Properties/Configuration Properties/Linker/Input并在Additional Dependencies字段中添加winmm.lib。
另外,请使用以下函数配置:
PlaySound(L"audio.wav", NULL, SND_APPLICATION);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接