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

dhxwm5r4  于 2023-05-30  发布在  Windows
关注(0)|答案(9)|浏览(288)

我尝试在我的编码中播放音乐文件,但失败了。我有我的音乐文件在同一个文件夹中保存。cpp文件。
有人能帮帮我吗
我的代码是:

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

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

qmb5sa221#

您需要使用绝对路径,确保您正在发送文件名(使用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
应该是这样让我知道,谢谢!

8ljdwjyq

8ljdwjyq2#

尝试添加-lwinmm到您的编译器设置的东西。对我很有效。只要在编译器选项区输入它就可以了。

qmb5sa22

qmb5sa223#

你能使用绝对路径并检查它是否是路径错误吗?

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

nimxete24#

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

有了SND_ASYNC标志,你的程序就可以(而且一定会)立即终止!
先试试PlaySound("kenny g.WAV", NULL, SND_SYNC);,看看它是否有效。

lkaoscv7

lkaoscv75#

说到路径,如果路径不是绝对的,数据文件应该在可执行文件所在的位置,而不是源文件所在的位置。
是的,这个问题在9年前已经是asked了;)

c9x0cxw0

c9x0cxw06#

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

dly7yett

dly7yett7#

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

xoefb8l8

xoefb8l88#

试试这个代码,它对我有用。对于代码::块,请在链接器设置中使用winmm。

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

2guxujil9#

我也面临着同样的问题。他们说的都是正确的,但除非你删除文件名中的空格,否则它不会播放。让它像test.wav一样,它就会工作。

相关问题