首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言問答

C語言 PlaySound 函數連結 winmm.lib 完整設定指南

     編輯:C 語言問答

問題:編譯通過、連結失敗 undefined reference to PlaySound

PlaySound 定義於 winmm.dll,需連結 winmm.lib。

Dev-C++ 設定步驟

  1. 專案 → Project Options → Parameters 分頁。
  2. Linker 欄位加入:-lwinmm (GCC 命名慣例:libwinmm.a → -lwinmm)。
  3. 或在 Compiler 分頁 Add the following commands when calling linker 加入 -lwinmm。

命令列編譯 (GCC/MinGW)

gcc main.c -o main.exe -lwinmm

Visual Studio 設定

  • 專案屬性 → Linker → Input → Additional Dependencies 加入 winmm.lib。
  • 或原始碼加入 #pragma comment(lib, "winmm.lib")。

完整可編譯範例

#include <windows.h>
#include <mmsystem.h> // 需包含此頭檔
#pragma comment(lib, "winmm.lib") // MSVC 專用

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmd, int nShow)
{
    PlaySound(TEXT("C:\\Music\\test.wav"), NULL, SND_FILENAME | SND_ASYNC);
    MessageBox(NULL, TEXT("播放中..."), TEXT("提示"), MB_OK);
    return 0;
}

常見坑

  • 路徑含空格需雙引號或使用短檔名。
  • SND_ASYNC 非阻塞,主程式結束會切斷播放,需 Sleep 或訊息迴圈保持進程存活。
  • 若檔案不存在,PlaySound 靜默失敗,可先用 GetFileAttributes 檢查。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved