mr-ZA
@mr-ZA

Линковка с библиотекой C++?

Всем привет, дан такой пример:

#include <iostream>
#include <windows.h>

int main() {
    mciSendString("play C:\\WINDOWS\\Media\\onestop.mid", NULL, 0, NULL);
    std::cout << "played...\npress enter for stop";
    std::cin.get();
    mciSendString("stop C:\\WINDOWS\\Media\\onestop.mid", NULL, 0, NULL);
    std::cout << "stopped...\npress enter for exit";
    std::cin.get();
    return 0;
}

линковать с winmm.lib, дополнительно обработать возможные ошибки вызова mciSendString()

Лучше воспользоваться какой-либо сторонней библиотекой и проигрывать mp3, mod, it, ogg и т. д. Миди со стандартным виндовым секвенсором уж очень убого звучит. (https://otvet.mail.ru/question/82279023)
Как слинковать библиотеку и исходник и где взять библиотеку winmm.lib?

Второй пример с похожей целью проиграть музыку в консоли:

#include <iostream>
#include <Windows.h>
#include "MMSystem.h"
using namespace std;

int main()
{
PlaySound(TEXT("LHSRLD11.wav"), NULL, SND_SYNC);

system("pause");
return 0;
}


Как вручную слинковать библиотеки с исходников в cmd? Пробовал вручную скачать либу, поместить ее в директории с файлом и с консоли [g++ -c main.cpp mmsystem.h] но выдает ошибки:
5c889908573d6146546776.png

Так же подскажите пожалуйста как подключить библиотеку SFML к Qt Creator? SFML нужно использовать в проекте, я скачал ее с оф. сайта но там под отдельные компиляторы(в моем случае подходит версия для Visual C++ 15 (2017) - 64-bit)
Как теперь встроить ее в Qt чтобы в проекте можно было добавить в .pro файл и использовать?
5c889abdd94ae411803573.png
  • Вопрос задан
  • 1258 просмотров
Решения вопроса 1
@res2001
Developer, ex-admin
mmsystem.h и winmm.lib - это стандартные виндовый заголовочный файл и библиотека, предоставляется вместе с Windows SDK, который входит в состав Visual Studio. mmsystem.h в студии доступен изначально, просто используете его в #include, копировать его в свой проект не нужно. winmm.lib то же доступен, но его надо подключить к проекту - опция -lwinmm.lib компилятора или задать в свойствах проекта как дополнительную используемую библиотеку, если используете IDE. По умолчанию она не подключена.

Вообще для подключения сторонних библиотек к любому С/С++ проекту надо:
1.добавить путь где лежать заголовочные файлы библиотеки опцией -I<path header files> в команду запуска компилятора.
2.добавить путь где лежат lib файлы (lib для msvc) библиотеки в опцию -L<path to lib files>. Если библиотечный файл один, то этот пункт можно пропустить и задать полный путь в п.3. Если файлов несколько, то проще задать путь к каталогу в опции -L, а в п.3 указывать только имя конкретного файла библиотеки.
3.добавить имя файла библиотеки (lib файла) в опцию -l<lib name> или полный путь к lib файлу.

Если вы собираете из IDE, то те же действия надо проделать в настройках проекта. Опции компилятора практически универсальны - те же опции (и аналогичный подход) используются в msvc, gcc, clang и других компиляторах.
По сборке библиотек с Qt проектом:
В pro файле:
переменная LIBS - задаются опции -L и -l компилятора (п.2 и п.3)
переменная INCLUDEPATH - задаются опции -I компилятора (п.1)
Например:
INCLUDEPATH += -Ipath/to/header/files
LIBS += -Lpath/to/lib/files -lmylibfile

Это все легко гуглится.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы