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>-------- 构建开始:项目:这是一个F**king国家,配置:发布Win32 -- ----
1> mycode.cpp
1>..\..\..\..\..\Shaul 的文档\Visual Studio 2010\Projects\MyProject\Release\SomeAudioFile-01.wav:致命错误 LNK1136:文件无效或损坏
========== 构建:0 成功,1 失败,0 最新,0 跳过 ==========

该文件非常好,在视觉工作室之外播放没有任何问题。

帮助将不胜感激。

4

3 回答 3

5

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

于 2013-03-13T11:47:49.623 回答
4

您将声音文件作为目标文件包含在内,因此编译器会尝试与之链接。但它是一个不可链接的二进制文件(这是错误消息所说的)。

不要在项目中包含声音文件,因此环境不会与之链接。

PS 今后,请不要在这样的公共网站上使用“坏”字眼。

于 2013-03-13T11:46:03.483 回答
0

要消除链接器错误,您还需要告诉 IDE 与winmm.lib库链接,因此打开Project/Properties/Configuration Properties/Linker/Input并在Additional Dependencies字段中附加winmm.lib 。

此外,使用以下函数配置文件:

PlaySound(L"audio.wav", NULL, SND_APPLICATION);

于 2013-10-03T21:30:14.997 回答