Использование библиотеки winmm в C

Я пытаюсь создать программу, в которой я могу воспроизводить музыку, т.е. mp3-файлы. Я пытаюсь сделать это, используя библиотеку winmm. Сначала, когда я пытался связать ее, компилятор выдавал ошибки, из которых я понял, что программа не был правильно связан с библиотекой, но затем я добавил файл библиотеки в настройках компоновщика, и теперь программа работает нормально (без ошибок, что говорит о том, что она была правильно связана), но музыка не воспроизводится. Я не могу понять, в чем проблема. В настоящее время я использую кодовые блоки, которые используют gcc compiler. Может кто-нибудь объяснить, в чем проблема и почему музыка не играет? Буду благодарен, если кто-нибудь сможет мне помочь!:)

мой код (он просто печатает текст, но музыка не воспроизводится):

#include <stdio.h>
#pragma comment (lib, "winmm.a")
#include <windows.h>
#include <mmsystem.h>


int main()
{
    printf("Hello world!\n");

    mciSendString("play song.mp3",NULL,NULL,NULL);

    printf("\nY");

    mciSendString("pause song.mp3",NULL,NULL,NULL);
    mciSendString("close song.mp3",NULL,NULL,NULL);

    printf("\ndone");

   return 0;
}

1 ответ

Решение

Команды MCI возвращаются немедленно. Это означает, что вы немедленно приостанавливаете и закрываете mp3 перед началом воспроизведения. Глядя на документацию, вы должны использовать флаг ожидания:

mciSendString("play song.mp3 wait",NULL,NULL,NULL);
Другие вопросы по тегам