C++ 中的 Playsound() 播放 windows 错误声音,我已经包含了 winmm.lib

Posted

技术标签:

【中文标题】C++ 中的 Playsound() 播放 windows 错误声音,我已经包含了 winmm.lib【英文标题】:Playsound() in C++ playing windows error sound, I have included winmm.lib 【发布时间】:2018-04-27 20:54:44 【问题描述】:

我正在尝试在 C++ 中使用 Playsound()。

我查看了所有内容,但总是听到默认的 Windows 错误声音。

PlaySound(TEXT("D:\\Pokemon Game Stuff\\Programming\\Tests\\city simulator\\Sound.wav"), NULL, SND_FILENAME | SND_ASYNC);

winmm.lib 已在链接器设置中设置。 完整的位置和文件名已经过测试。 我正在使用 Code::Blocks 并使用 C++ 14 标准进行编译。

【问题讨论】:

【参考方案1】:

根据PlaySound() 文档:

SND_FILENAMEpszSound 参数是一个文件名。 如果找不到文件,则函数播放默认声音,除非设置了SND_NODEFAULT 标志。

...

PlaySound 在以下目录中搜索声音文件:当前目录; Windows 目录; Windows系统目录; PATH 环境变量中列出的目录;以及映射到网络中的目录列表。如果函数找不到指定的声音并且没有指定SND_NODEFAULT 标志,PlaySound 将使用默认的系统事件声音。如果该函数既找不到系统默认入口也找不到默认声音,则不发出声音并返回FALSE

仔细检查文件是否确实存在于您指定的路径中,并且运行您的应用程序的用户有权访问该文件。

【讨论】:

以上是关于C++ 中的 Playsound() 播放 windows 错误声音,我已经包含了 winmm.lib的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PlaySound() 或任何基本函数/方法在 C++ 中同时播放 1 个以上的 .wav 声音?

PlaySound 无法播放两个异步声音

如何使用 Python 中的 playsound 模块同时播放两种声音?

将 wavs 加载到内存中,然后使用 Win32 API 异步播放声音

QT (C++) 中的简单声音 (.wav) 播放应用程序

PlaySound 功能奇怪的行为