В том числе winmm.lib не работает

Я пытаюсь написать небольшую программу с простой игрой в угадывание чисел.

Я хочу воспроизвести mp3-файл, используя простой поток. я прочитал Как воспроизвести или открыть звуковой файл * .mp3 или * .wav в программе c ++?, но я не могу заставить его работать. Всегда выдает ошибку:

||=== Build: Debug in pinkpantherguessinggame (compiler: GNU GCC Compiler) ===|
C:\Users\Leon\Desktop\pCode\pinkpantherguessinggame\main.cpp|8|warning: ignoring #pragma comment  [-Wunknown-pragmas]|
obj\Debug\main.o||In function `Z11pinkpantherv':|
C:\Users\Leon\Desktop\pCode\pinkpantherguessinggame\main.cpp|16|undefined reference to `_imp__mciSendStringA@16'|
||error: ld returned 1 exit status|
||=== Build failed: 2 error(s), 1 warning(s) (0 minute(s), 1 second(s)) ===|

Вот мой код:

#include <cstdlib>
#include <ctime>
#include <iostream>
#include <windows.h>
#include <thread>
#include <Mmsystem.h>

#pragma comment(lib, "Winmm.lib")

using namespace std;

void start(int);

void pinkpanther()
{
mciSendString("open \"‪E:\\Users\\cdev\\Musik\\pinkpanther.mp\" type mpegvideo alias mp3", NULL, 0, NULL);
mciSendString("play mp3", NULL, 0, NULL);
}

Я пытался скачать winmm.lib откуда-то, потому что он, кажется, не находит библиотеку (только предположение).

Я делаю что-то не так или мне нужно включить какой-нибудь другой заголовок?

0

Решение

Если вы внимательно прочитаете вывод компилятора, вы увидите это предупреждение:

предупреждение: игнорирование комментария #pragma [-Wunknown-псевдокомментарии]

Это означает, что ваш компилятор (GCC) не поддерживает использование вашего кода #pragma comment, так что winmm.lib в конечном итоге не попадает в ваш конечный исполняемый файл, что приводит к следующей ошибке компоновщика:

неопределенная ссылка на `_imp__mciSendStringA @ 16 ‘

Дело не в том, что компоновщик не может найти winmm.lib, дело в том, что компоновщику не сказано использовать winmm.lib на первом месте.

#pragma используется для вызова компилятор конкретных команды. Не все компиляторы реализуют #pragma comment, VC ++ делает (и некоторые другие, как BCC32 / 64), но GCC нет. Другой вопрос, на который вы ссылались, был помечен visual-c++, так #pragma comment было уместно в этом случае.

В вашем случае вам придется соответствующим образом скорректировать процесс сборки, чтобы использовать другой способ указать компоновщику использовать winmm.lib, Вы делаете это в GCC, используя -l вариант при вызове компоновщика, например -lwinmm,

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]