C/C++

Библиотека в с++ может иметь и dll, lib и h файлы? То есть обязательно все подключать?

Да, библиотека на C++ может иметь все три типа файлов: .dll/.so (динамически подключаемые библиотеки), .lib/.a (статические библиотеки) и .h (заголовочные файлы).

Заголовочные файлы (.h) содержат объявления функций, классов, переменных и других элементов, которые определены в библиотеке. Эти объявления нужны для того, чтобы компилятор знал о существовании этих элементов и мог проверить правильность использования их в коде, который использует библиотеку. Поэтому без заголовочных файлов использование библиотеки невозможно.

Статические библиотеки (.lib/.a) представляют собой набор объектных файлов, скомпилированных из исходных кодов библиотеки, и объединенных в единую библиотеку. Эта библиотека статически связывается с программой на этапе компиляции, и все необходимые функции и классы добавляются в исполняемый файл программы.

Динамически подключаемые библиотеки (.dll/.so) являются отдельными файлами, которые могут загружаться в память программы во время ее выполнения. Эти библиотеки обычно содержат более общие функции и классы, которые могут использоваться различными приложениями.

Чтобы использовать библиотеку, обычно нужно подключить только заголовочный файл (.h) в свой исходный код, который объявляет функции, классы и другие элементы, которые будут использоваться в коде программы. Остальные файлы (.dll/.so, .lib/.a) используются автоматически, в зависимости от того, какая библиотека и какой тип связывания используется.
Юлия Ковалёва
Юлия Ковалёва
25 526
Лучший ответ
Mohamedrizo Shahidi Ну к примеру я использую компилятор mingw, я создал папку, в ней только фаил main.cpp. И скачал с сайта библиотеку, в ней много папок, там есть папка include там .h файлы, есть папки либ.. Короче пока вообще не особо врубаюсь что к чему. Я смотрел в Ютубе как подключить данную библиотеку, там используют Cmake. Хотел узнать что эта прога впринципе необязательна? Можно же и в ручную?
Библиотека в С++ (у майрософт) - это lib.
В h засовывают уже заранее написанные заготовки вами или до вас. Это еще можно назвать библиотекой.
А dll вообще никак не связан с языком ибо уже скомпилирован.
https://ru.stackoverflow.com/questions/184144/%D0%9A-%D1%87%D0%B5%D0%BC%D1%83-%D0%BE%D1%82%D0%BD%D0%BE%D1%81%D1%8F%D1%82%D1%81%D1%8F-lib-%D0%B8-dll
Mohamedrizo Shahidi Ну к примеру я использую компилятор mingw, я создал папку, в ней только фаил main.cpp. И скачал с сайта библиотеку, в ней много папок, там есть папка include там .h файлы, есть папки либ.. Короче пока вообще не особо врубаюсь что к чему. Я смотрел в Ютубе как подключить данную библиотеку, там используют Cmake. Хотел узнать что эта прога впринципе необязательна? Можно же и в ручную?
>Ну как я понял h файлы по любому нужны?
Можешь обойтись вызовом GetProcAddress
Mohamedrizo Shahidi Ну к примеру я использую компилятор mingw, я создал папку, в ней только фаил main.cpp. И скачал с сайта библиотеку, в ней много папок, там есть папка include там .h файлы, есть папки либ.. Короче пока вообще не особо врубаюсь что к чему. Я смотрел в Ютубе как подключить данную библиотеку, там используют Cmake. Хотел узнать что эта прога впринципе необязательна? Можно же и в ручную?
Может
Подключай только нужное, но можешь и всё, если объёмы нужного неизвестны
Mohamedrizo Shahidi Ну как я понял h файлы по любому нужны? Ну для объявления заголовочных файлов? Как я понял без h файлов не получится использовать нужные заголовочные файлы ?