Функция C Playsound возвращает код выхода -1073741819 и не воспроизводит mp3-файл - PullRequest
0 голосов
/ 29 ноября 2018

Некоторые части, которые включают в себя важную функцию 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);
        //
    }

Это хорошо работало на других ПК или ноутбуке, но когда я вставляю этот код и файлэто, он возвращает странный код завершения и останавливается в момент «части моего кода»

, когда я удаляю эту «часть моего кода», это работало без проблем.

Ошибка не возниклапри компиляции этого кода, даже если он имеет странный код завершения.

Может кто-нибудь объяснить мне, почему только мой ноутбук возвращает этот код -107 ~~~ и как это исправить?

1 Ответ

0 голосов
/ 29 ноября 2018

well -1073741819 - это 0xc0000005 в шестнадцатеричном формате, что равно ACCESS_VIOLATION

возможно, у вас нет разрешения на чтение файла

см. Ошибка исключения c0000005 в VC ++

Если подумать, это не перманент, а ошибка записи в память.Я подозреваю, что вы где-то не проверяете возвращаемое значение и, следовательно, используете указатель NULL, который был возвращен функцией.Вы не показываете достаточно кода, чтобы быть в состоянии сказать, хотя

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...