mciSendCommand播放midi,x86可以运行,但是x64下没有声音

1

使用mciSendCommand播放一段midi音频,在x86下可以正常播放,但是在x64下没有声音。

#include<Windows.h>
#pragma comment(lib, "winmm.lib")

int main()
{
    UINT wDeviceID;
    DWORD dwReturn;
    MCI_OPEN_PARMS mciOpenParms;
    MCI_PLAY_PARMS mciPlayParms;

    //打开设备
    mciOpenParms.lpstrDeviceType = TEXT("sequencer");
    mciOpenParms.lpstrElementName = TEXT("bgm.mid");

    if (dwReturn = mciSendCommand(NULL, MCI_OPEN,
      MCI_OPEN_ELEMENT | MCI_WAIT ,
        (DWORD_PTR)(static_cast<LPVOID>(&mciOpenParms))))
    {
        return (dwReturn);
    }
    wDeviceID = mciOpenParms.wDeviceID;

    //播放音乐
    if (dwReturn = mciSendCommand(wDeviceID, MCI_PLAY, MCI_WAIT,
        (DWORD_PTR)(static_cast<LPVOID>(&mciPlayParms))))
    {
        mciSendCommand(wDeviceID, MCI_CLOSE, 0, NULL);
        return (dwReturn);
    }

    system("pause");

    return 0;
}

C++
ava
慢热友人.

2021-2-13

0

我在 x86 / x64、Debug / Release 下面都测试过了,你的代码都可以播放出来指定的 mid 文件。

或许你可以考虑换一个路径试试。

除此之外,还有可能是电脑声卡驱动的问题。可以考虑发送给别人试试。

ava
慢羊羊

2021-2-15