2017-09-04 72 views
-4

代码:为什么我的C++代码不工作?

#include<iostream> 
#include<windows.h> 
#include"MMSystem.h" 
using namespace std; 
int main() 
{ 
    PlaySound(TEXT("Soma.wav"), NULL, SND_FILENAME); 
    return 0; 
} 

的代码功能,不给任何错误的警报,但它仍然不能播放音乐。我正在使用Visual Studio,并且在链接器中包含WinMM.lib。我也有预编译头禁用。任何反馈将不胜感激,谢谢。

+4

什么说'PlaySound'的返回码? – user4581301

+2

来自[问]:*“标题是潜在回答者会看到的第一件事,如果你的标题不感兴趣,他们将不会阅读其余的内容,所以**让它计数**”*。 – IInspectable

回答

1

您的代码不播放声音作为PlaySound功能不能定位在以下任一位置的“Soma.wav”文件:

...当前目录下; Windows目录; Windows系统 目录; PATH环境变量中列出的目录;和 映射到网络中的目录列表。

机会是您听到默认的系统事件声音和你的函数返回。解决的办法是把.wav文件中提到的地点之一或指定完整的文件路径:

PlaySound(TEXT("C:\\Your Folder\\Soma.wav"), NULL, SND_FILENAME); 

如果您正在运行从IDE的应用程序,然后把WAV文件在您的源代码。如果部署将文件与您的exe文件放在同一个文件夹中。

+0

更可能的问题是程序立即结束 –

+1

@DavidHeffernan:'PlaySound'是一个同步调用,除非你指定'SND_ASYNC'(代码没有)。假设系统能够找到音频文件,程序不会在播放声音之前结束。 – IInspectable