簡體   English   中英

如何使用Windows API在C ++中播放聲音?

[英]How to PlaySound in C++ using Windows API?

我嘗試在編碼中播放音樂文件,但失敗了。 我將我的音樂文件放在保存.cpp文件的同一文件夾中。

有人能幫我嗎?

我的代碼是:

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

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

您需要使用絕對路徑,確保您正在發送文件名(使用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
那應該是它。 讓我知道,謝謝!

嘗試將-lwinmm添加到編譯器設置中。 它對我有用。 只需在編譯器選項區域中鍵入它,它就可以工作。

你可以使用絕對路徑並檢查它是否是路徑錯誤?

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

使用SND_ASYNC標志,您的程序可以(並且它將)立即終止!

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

你可以通過PlaySound(TEXT(“SystemStart”),NULL,SND_ALIAS)進行測試;

說到路徑,您的數據文件應該是可執行文件的位置,而不是源文件的位置,如果路徑不是絕對的。

是的,9年前這個問題已被提出 ;)

以防萬一尚未解決! 您需要包含前面注釋中提到的兩個頭文件,將項目鏈接到所需的lib並將聲音文件放在與.exe文件相同的文件夾中(如果您沒有使用完整路徑)

試試這個代碼對我有用。 另外對於code :: Block在鏈接器設置中使用winmm。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM