C Playsound Function returns -1073741819 退出代码,不播放mp3文件

C Playsound Function returns -1073741819 exit code and doesn't play mp3 file

包含Playsound重要功能的部分

MCI_OPEN_PARMS m_mciOpenParms;
MCI_PLAY_PARMS m_mciPlayParms;
DWORD m_dwDeviceID;
MCI_OPEN_PARMS mciOpen;
MCI_PLAY_PARMS mciPlay;

int dwID;
//
#define TITLE_SPACE 55
#define TITLE_ENTER 10
/*music address*/#definedecision_change "C:\Users\chanho\Desktop\decision_change.wav"
#define main_theme "C:\Users\chanho\Desktop\FlappyChicken.mp3"

我的部分代码

        if (inner_time == 0)
    {
        //bgm
        mciOpen.lpstrElementName = TEXT(main_theme);
        mciOpen.lpstrDeviceType = "mpegvideo";
        mciSendCommand(NULL, MCI_OPEN, MCI_OPEN_ELEMENT | MCI_OPEN_TYPE, (DWORD)(LPVOID)&mciOpen);
        dwID = mciOpen.wDeviceID;
        mciSendCommand(dwID, MCI_PLAY, MCI_DGV_PLAY_REPEAT, (DWORD)(LPVOID)&m_mciPlayParms);
        //
    }

它在其他 PC 或笔记本电脑上运行良好,但是当我插入此代码并对其进行编译时,它 returns 奇怪的退出代码并在 "part of my code"

的那一刻停止

当我删除这个 "part of my code" 时,它没有问题。

编译此代码时没有发生错误,即使它有奇怪的退出代码。

谁能解释一下为什么只有我的笔记本电脑 returns 那个 -107~~~ 代码问题以及如何修复它?

well -1073741819 是十六进制的 0xc0000005,即 ACCESS_VIOLATION

可能您对该文件没有读取权限

Exception Error c0000005 in VC++

转念一想,这不是烫发问题,而是内存读写错误。我怀疑您没有在某处测试 return 值,因此使用了由函数 returned 的 NULL 指针。你没有显示足够的代码来判断