如何使用Windows API在C ++中播放声音?

时间:2009-10-14 10:23:34

标签: c++ winapi playsound

我尝试在编码中播放音乐文件,但失败了。我将我的音乐文件放在保存.cpp文件的同一文件夹中。

有人可以帮助我吗?

我的代码是:

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

int main() { 
    PlaySound("kenny g.WAV", NULL, SND_ASYNC);    
}

8 个答案:

答案 0 :(得分:10)

您需要使用绝对路径,确保您发送文件名(使用SND_FILENAME标志),并暂停程序足够长时间播放声音文件(例如,使用getchar())。您需要在项目设置中链接winmm.lib库,并在标题中链接#include windows.h和mmsystem.h。

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

int main() {
    PlaySoundA((LPCSTR) "C:\\kenny g.WAV", NULL, SND_FILENAME | SND_ASYNC);
    getchar();
}

API:http://msdn.microsoft.com/en-us/library/ms712879(VS.85).aspx
那应该是它。让我知道,谢谢!

答案 1 :(得分:4)

尝试将-lwinmm添加到编译器设置中。它对我有用。只需在编译器选项区域中键入它即可。

答案 2 :(得分:1)

您可以使用绝对路径并检查它是否是路径错误?

Ex: PlaySound("C:\\kenny g.WAV", NULL, SND_ASYNC); 

答案 3 :(得分:1)

int main() { 
    PlaySound("kenny g.WAV", NULL, SND_ASYNC); 
}

使用SND_ASYNC标志,您的程序可以(并且它将)立即终止!

首先尝试PlaySound("kenny g.WAV", NULL, SND_SYNC);,看它是否有效。

答案 4 :(得分:0)

说到路径,您的数据文件应该是可执行文件的位置,而不是源文件的位置,如果路径不是绝对的。

是的,9年前这个问题已经asked;)

答案 5 :(得分:0)

你可以通过PlaySound测试(TEXT(“SystemStart”),NULL,SND_ALIAS);

答案 6 :(得分:0)

以防万一尚未解决! 您需要包含前面注释中提到的两个头文件,将项目链接到所需的lib并将声音文件放在与.exe文件相同的文件夹中(如果您没有使用完整路径)

答案 7 :(得分:0)

试试这个代码对我有用。另外对于code :: Block在链接器设置中使用winmm。

#include <iostream>  
#include <windows.h>
#include <MMSystem.h>
 int main(){
PlaySound(TEXT("your file path.wav") , NULL , SND_SYNC) ;
    return 0;
}