【问题标题】:How to PlaySound in C++ using Windows API?如何使用 Windows API 在 C++ 中播放声音?
【发布时间】:2009-10-14 10:23:34
【问题描述】:

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

有人可以帮我吗?

我的代码是:

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

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

【问题讨论】:

  • 使用 GetErrorCode() 函数得到的错误代码是什么?
  • 我不确定 GetErrorCode() 但错误消息是 [Linker error]undefined reference to 'PlaySound@12' id returned 1 exit status
  • 你需要 winmm.lib 来播放 Luis 提到的音乐

标签: c++ winapi playsound


【解决方案1】:

您需要使用绝对路径,确保您发送的是文件名(使用 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
应该是这样的。告诉我,谢谢!

【讨论】:

  • 如何在 gcc/windows 下编译该示例?
【解决方案2】:

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

【讨论】:

  • 谢谢,我们必须将其添加到 Linker 设置而不是编译器设置中。
  • 谢谢它帮助我
【解决方案3】:

能不能用绝对路径看看是不是路径错误?

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

【讨论】:

  • 你链接到所需的库了吗?
【解决方案4】:
int main() { 
    PlaySound("kenny g.WAV", NULL, SND_ASYNC); 
}

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

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

【讨论】:

    【解决方案5】:

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

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

    【讨论】:

      【解决方案6】:

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

      【讨论】:

        【解决方案7】:

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

        【讨论】:

          【解决方案8】:

          试试这个对我有用的代码。同样对于代码::块在链接器设置中使用 winmm。

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-07-25
            • 2022-08-12
            • 2011-03-30
            • 1970-01-01
            • 2021-01-31
            相关资源
            最近更新 更多