playing a .wav file

2019-07-24 09:14发布

I'm using visual studio 2010 express and I'm trying to write a simple program that will repeat a wave file 5 times(I'm running a windows xp sp3).

This is as far as I got:

#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;
 }

The problem is I keep getting this error message when I'm building it:

1>------ Build started: Project: It's a F**king Country, Configuration: Release Win32 --    ----
1>  mycode.cpp
1>..\..\..\..\..\Shaul's documents\Visual Studio 2010\Projects\MyProject\Release\SomeAudioFile-01.wav : fatal error LNK1136: invalid or corrupt file
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

The file is perfectly fine and plays with no problems whatsoever outside visual studio.

Help would be truly appreciated.

3条回答
smile是对你的礼貌
2楼-- · 2019-07-24 09:46

Instead of adding the WAV file to the project files, add it to the resources and use SND_RESOURCE instead of SND_FILENAME.

查看更多
手持菜刀,她持情操
3楼-- · 2019-07-24 09:47

You include the sound file as a object file, so the compiler tries to link with it. But it's a binary file that's not linkable (which is what the error message says).

Don't include the sound file in the project, so the environment won't link with it.

P.S. In the future, please refrain from using "bad" words on a public site like this.

查看更多
三岁会撩人
4楼-- · 2019-07-24 09:53

To get rid of the linker error, you need to tell the IDE to link with the winmm.lib library also, so open Project/Properties/Configuration Properties/Linker/Input and append winmm.lib in the Additional Dependencies field.

Also, use the following function profile:

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

查看更多
登录 后发表回答