Перейти к содержимому

Winmm lib как подключить

  • автор:

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

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

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

#include #include #include "MMSystem.h" using namespace std; int main()

5c889908573d6146546776.png

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

5c889abdd94ae411803573.png

Так же подскажите пожалуйста как подключить библиотеку SFML к Qt Creator? SFML нужно использовать в проекте, я скачал ее с оф. сайта но там под отдельные компиляторы(в моем случае подходит версия для Visual C++ 15 (2017) — 64-bit)
Как теперь встроить ее в Qt чтобы в проекте можно было добавить в .pro файл и использовать?

  • Вопрос задан более трёх лет назад
  • 1201 просмотр

Комментировать
Решения вопроса 1
Developer, ex-admin

mmsystem.h и winmm.lib — это стандартные виндовый заголовочный файл и библиотека, предоставляется вместе с Windows SDK, который входит в состав Visual Studio. mmsystem.h в студии доступен изначально, просто используете его в #include, копировать его в свой проект не нужно. winmm.lib то же доступен, но его надо подключить к проекту — опция -lwinmm.lib компилятора или задать в свойствах проекта как дополнительную используемую библиотеку, если используете IDE. По умолчанию она не подключена.

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

Статическая линковка libcurl в MinGW

Добрый день господа. Пытаюсь подключить libcurl.a к проекту в Code::Blocks MinGW. Скинул заголовки в include и .a файл в lib, прописываю линк, #define и параметр -static но ничего не происходит, как была ошибка мол curl_easy_init() не найдено, так и есть. Так вот, есть ли где-нибудь подробная инструкция подключения именно статических библиотек к проекту Си.

Отслеживать
9,052 2 2 золотых знака 19 19 серебряных знаков 34 34 бронзовых знака
задан 19 окт 2016 в 5:16
597 3 3 серебряных знака 21 21 бронзовый знак
Залинкуйте его через саму среду. stackoverflow.com/questions/5862757/…
19 окт 2016 в 5:27
Так беда в том, что я так и делаю. Вот скрин — pp.vk.me/c637821/v637821670/10747/dFvgb5SKj7E.jpg
19 окт 2016 в 5:43
Можете попробовать запустить свою программу и заскринить (через PrintScreen) место вывода ошибок?
19 окт 2016 в 6:09

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Особенность подключения статических библиотек состоит в том, чтобы, помимо подключения самой библиотеки, подключить и все её зависимости, которые, в свою очередь, можно подключать как статические библиотеки, так и как dll.

Что касается именно libcurl , то в зависимости от опций, с которыми она была скомпилирована, эта библиотека может зависеть от целой кучи сторонних библиотек (помимо системных).

Как я уже рекомендовал тут, собранную libcurl и её зависимости можно найти вот в этом репозитории: https://bintray.com/vszakats/generic

Для статической линковки этой версии curl понадобятся ещё 3 библиотеки из того репозитория: libssh2 , nghttp2 , openssl . Так же, для сборки понадобится zlib . Для сборки всех библиотек используется MinGW-w64 версии 6.2.0, которая в своём составе имеет и zlib , так что рекомендую взять эту же версию.

Чтобы проект в Code::Blocks был переносимым, указанные библиотеки и их заголовочники лучше всего копировать не в директорию MinGW, а куда-то в пределах папки с проектом (например, в папки lib и include ).

Далее, надо открыть настройки проекта Project — Build options и прописать:

  • на вкладке Compiler settings — #defines : CURL_STATICLIB
  • на вкладке Search Directories — Compiler : include — относительный/абсолютный путь к заголовочникам ( .h ) библиотек
  • на вкладке Search Directories — Linker : lib — относительный/абсолютный путь к либам ( .a файлам) библиотек
  • на вкладке Linker settings — Link libraries : curl , ssl , crypto , ssh2 , nghttp2 , z , ws2_32 , winmm , wldap32 , crypt32 — линкуемые библиотеки. Тут очень важно соблюдать порядок, в котором библиотеки будут линковаться!

Вот, собственно, и всё, можно собирать:

gcc.exe -Wall -O2 -DCURL_STATICLIB -std=c99 -m32 --static -static-libgcc -Iinclude -IC:\dev\mingw-w64\mingw32\i686-w64-mingw32\include -c B:\cb_curl_static\main.c -o obj\Release\main.o gcc.exe -Llib -LC:\dev\mingw-w64\mingw32\i686-w64-mingw32\lib -o bin\Release\cb_curl_static.exe obj\Release\main.o -s -m32 --static -static-libgcc -lcurl -lssl -lcrypto -lssh2 -lnghttp2 -lz -lws2_32 -lwinmm -lwldap32 -lcrypt32 Output file is bin\Release\cb_curl_static.exe with size 2.68 MB 

В итоге, получился довольно большой exe файл, но он зависит только от системных библиотек.

Непонятная ошибка компилятора при использовании timeGetTime(); в C++ (VS 2003)

При подключении mmsystem.h и использовании функции timeGetTime(); всегда выдается ошибка:

test.obj : error LNK2019: unresolved external symbol __imp__timeGetTime@0 referenced in function «bool __cdecl Initialization(struct HWND__ *)» (?Initialization@@YA_NPAUHWND__@@@Z)

Порядок инклуда у меня такой:

Подскажите в чем проблема?

#1
16:48, 4 мар 2009

надо подключить библиотеку Winmm.lib

#2
17:04, 4 мар 2009

randomx
Спасибо большое, а то можно сказать почти бился лбом об стену ища причину ошибки, а все оказывается так просто =)

#3
18:28, 4 мар 2009

Heb
зачем тебе эта функция? используй clock() — во первых она легче по вызову во вторых ANSI C.

#4
21:52, 4 мар 2009

Что-то в последнее время участились вопросы про ошибку LNK2019 — причем ответ был везде один и тот же — не подключенная библиотека. Народ — смотрите MSDN прежде чем плодить похожие темы пожалуйста

#5
22:08, 4 мар 2009

Andrey
Мне эта функция нужна для вычисления дельта тайм при рендеринге, а про clock() я не знал, можно чуть подробнее про нее?

#6
22:17, 4 мар 2009

Вообще было бы интересно узнать какую функцию лучше всего использовать для вычисления времени?
Многие ругаются на timeGetTime() из-за не точности, но лично меня она никогда не подводила.
Слышал про разные замены этой функции. Уже как минимум, кажется, 3 варианта.
Что же оптимальнее всего использовать?

#7
22:20, 4 мар 2009

Я всегда использую QueryPerformanceCounter

#8
23:01, 4 мар 2009

В DXUT, кстати, тоже. Это не показатель конечно, но что-то мне подсказывает, что все на QPC в конце концов переходят.

#9
11:10, 5 мар 2009

народ! не начинайте заново! юзайте поиск. тема с вычислением времени с максимальной точностью поднималась несколько раз. перечитайте старые темы.

#10
19:15, 5 мар 2009

alex-r
точность у нее 1 / QueryPerformanceFrequency секунд

#11
22:11, 5 мар 2009

d.m.k
Да, конечно, неправильно выразился 🙂

#12
22:50, 5 мар 2009

pentagra
можно вопрос? если еще раз поделятся опытом старожилы со младенцами, типа меня, то разве накроется форум от переизбытка информации? если не хочешь — не отвечай. тебя за язык никто не тянет!
. искренне извиняюсь

#13
23:00, 5 мар 2009

4mlr
>pentagra
>можно вопрос? если еще раз поделятся опытом старожилы со младенцами, типа меня,
>то разве накроется форум от переизбытка информации? если не хочешь — не
>отвечай. тебя за язык никто не тянет!
>. искренне извиняюсь

Таких тем просто десятки всплывают каждую неделю.
Запаришься каждому персонально рассказывать.

#14
23:19, 5 мар 2009

Heb
просто вызывай ее вместо timeGetTime();

#include . clock_t t = clock();

ну а для более точного конечно Win32 QueryPerformanceCounter про него и про clock() — MSDN.

Winmm lib как подключить

Регистрация: 16.04.2011

Сообщений: 126

Проблема с библиотекой winmm.lib

Подключил библиотеку в проект, но все равно при компиляции выскакивает ошибка со ссылкой на неразрешенный символ. Кричит именно на функции waveInGetNumDevs, waveOutGetNumDevs, waveInGetDevCaps, waveOutGetDevCaps.
Microsoft Visual Studio 2010
Задача программы, получение всех звуковых устройств.

#include #include #include #include #include #include #include #pragma comment(lib, "winmm.lib") struct device < char name[30]; int id; char support[50]; >; void GetInputDevices(); void GetOutputDevices(); using std::list; list devices; void main() < printf("Recording Devices\n"); GetInputDevices(); printf("PlayBack Devices\n"); GetOutputDevices(); system("pause"); >void GetInputDevices() < int waveInDevicesCount = waveInGetNumDevs(); if (waveInDevicesCount >0) < for (int i = 0; i < waveInDevicesCount; i++) < LPWAVEINCAPS waveInCaps; waveInGetDevCaps(i,waveInCaps,sizeof(waveInCaps)); device info; strcpy(info.name,waveInCaps->szPname); printf("%s",waveInCaps->szPname); sprintf(info.support,"%s",waveInCaps->dwFormats); printf("%s",waveInCaps->dwFormats); info.id = i; devices.push_back(info); > > > void GetOutputDevices() < int waveOutDevicesCount = waveOutGetNumDevs(); if (waveOutDevicesCount >0) < for (int i = 0; i < waveOutDevicesCount; i++) < LPWAVEOUTCAPS waveOutCaps; waveOutGetDevCapsA(i,waveOutCaps,sizeof(waveOutCaps)); device info; strcpy(info.name,waveOutCaps->szPname); printf("%s",waveOutCaps->szPname); sprintf(info.support,"%s",waveOutCaps->dwFormats); printf("%s",waveOutCaps->dwFormats); info.id = i; devices.push_back(info); > > >

Помогите, пожалуйста.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *