12

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

有人能帮我吗?

我的代码是:

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

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

8 回答 8

13

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

于 2009-10-14T10:40:45.443 回答
7

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

于 2013-02-24T21:56:43.140 回答
1

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

Ex: PlaySound("C:\\kenny g.WAV", NULL, SND_ASYNC); 
于 2009-10-14T10:28:02.813 回答
1
int main() { 
    PlaySound("kenny g.WAV", NULL, SND_ASYNC); 
}

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

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

于 2009-10-14T10:44:25.160 回答
0

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

于 2013-02-27T15:32:55.063 回答
0

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

是的,这个问题在9 年前就被问过了;)

于 2009-10-14T10:50:50.477 回答
0

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

于 2013-09-05T04:19:07.527 回答
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;
}
于 2017-08-24T17:38:04.713 回答