PlaySound 适用于 Visual Studio 但不适用于独立的 exe

PlaySound works in Visual Studio but not in standalone exe

我正在尝试使用 Visual Studio 在 C++ 中播放 wav 文件。 我将文件 "my.wav" 放在我的项目目录中并使用代码

PlaySound(TEXT("my.wav"), NULL, SND_FILENAME | SND_SYNC);

我按下播放按钮(或 F5 甚至 Ctrl-F5),它播放的声音很好。

我打开一个命令提示符并转到 Debug/ 和 运行 MyApp.exe,当它 运行 时它会播放错误提示音。

注意:理想情况下,声音会捆绑在 exe 中,这样我就可以分发 exe,它就可以工作了。我试着把它放在 Resource.rc 中,但我在所有示例中看到的代码

PlaySound( (char*)IDR_WAVE1, NULL, SND_RESOURCE | SND_SYNC );

甚至不为我编译。抱怨 IDR_WAVE1,即使那是我的资源名称。

我记得你需要 'link' 资源文件和 Visual Studio 中的资源脚本文件“.rc 文件”,以将其嵌入到 .exe 文件中。否则你需要像@wilx 指出的那样加载它。

我对老派的 win32 有点生疏,但它是这样的:

在您的文件中包含 resource.h 并使用 MAKEINTRESOURCE

PlaySound(MAKEINTRESOURCE(IDR_WAVE1), NULL, SND_RESOURCE | SND_SYNC );