С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/35: Рейтинг темы: голосов - 35, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 07.10.2012
Сообщений: 3
1

Использование сторонних библиотек

07.10.2012, 06:59. Показов 7184. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем салют! Я новичок на этом форуме, а также в языке Си++. У меня возникли вопросы.

Дело в том, что до Си++ я кодил на PHP, причем весьма удачно, как я считаю. Так вот, в этом PHP для использования стороннего расширения достаточно было просто заинклудить главный файл с исходным кодом, в котором инклудились остальные "кусочки" и в конце концов объявлялись нужные для работы функции и классы.

А вот в Си++ я так понял этот вариант не катит. Решил я использовать в своей программе библиотеку libcurl (http://ru.wikipedia.org/wiki/cURL, http://curl.haxx.se). В разделе Download есть много-много вариантов, для разных компиляторов и платформ. Ах да, сама библиотека написана на Си. Я правильно понял, что если бы изначально библиотека была написана на Си++, то тогда можно было бы без проблем скачать исходные коды и просто их заинклудить? Зачем все эти готовые скомпилированные варианты?

Чтобы можно было использовать функциональность курла в MSVS 2012, я сделал следующее:

1. Сделал #include <curl\curl.h> в начале программы (перед этим скопировал необходимые инклуды курла в папку с остальными)
2. В настройках проекта, в разделе Linker (Компоновщик) -> Input (Ввод) добавил файл libcurl.lib (поставлялся в варианте для MSVC). Перед этим также скопировал файл в папку C:\Program Files (x86)\Windows Kits.

Насчет первого мне более менее ясно. Хотя все равно непонятки насчет этих .h файлов, что они содержат и почему у них не .cpp расширение. А второе зачем? Что оно значит? И тем более мне непонятно, почему после второго пункта мне еще потребовалось засунуть файл libcurl.dll в папку с готовым .exe.

А если я захочу куда-нибудь выложить свою программу в виде исходных текстов? Программисту, читающему мой исходник, для корректной работы надо будет засунуть include файлы в папку с компилятором, кинуть .lib и .dll файлы. А библиотека может быть не одна. Можно ли как-то все это собрать в одну кучу? Проясните пожалуйста!

P. S. у PHP очень хороший сайт с документацией http://www.php.net, где можно найти описание любой функции, похожие функции, функции из этой же категории и прочее. Причем на русском. И это официальный сайт. Весьма удобно и надежно. Есть ли что-нибудь подобное по Си++, желательно тоже на русском?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.10.2012, 06:59
Ответы с готовыми решениями:

Подключение сторонних библиотек
Задание: реализовать SRP-6a Функцию хэширования нашел, осталось понять как подключить библиотеку с...

Подключение сторонних библиотек
Я пишу в Visual Studio и в некоторый проектах использую SDL. У меня есть папка с библиотеками и...

Установка сторонних библиотек
Здравствуйте. Мне нужна библиотека по нейросетям. В интернете нашел вот такую библиотеку....

Графика без сторонних библиотек
Интересует следующий вопрос: можно ли без сторонних библиотек, чистым С++ вывести пиксели разных...

3
320 / 270 / 128
Регистрация: 24.05.2012
Сообщений: 629
07.10.2012, 08:09 2
Цитата Сообщение от HatoL Посмотреть сообщение
Хотя все равно непонятки насчет этих .h файлов, что они содержат и почему у них не .cpp расширение.
Заголовочные файлы содержат прототипы (объявления) функций, дабы компилятор знал, что где-то в проекте такая функция есть. Файлы исходного кода определяют эти функции. Т. е. если подключить заголовок, но не добавить lib или cpp, то компилятор все это проглотит, однако будет ругаться компоновщик (linker) на отсутствующие функции.
Цитата Сообщение от HatoL Посмотреть сообщение
Есть ли что-нибудь подобное по Си++, желательно тоже на русском?
http://cplusplus.com/reference
Учите английский.
0
0 / 0 / 0
Регистрация: 07.10.2012
Сообщений: 3
07.10.2012, 08:39  [ТС] 3
Цитата Сообщение от Кот Ангенс Посмотреть сообщение
Заголовочные файлы содержат прототипы (объявления) функций, дабы компилятор знал, что где-то в проекте такая функция есть. Файлы исходного кода определяют эти функции. Т. е. если подключить заголовок, но не добавить lib или cpp, то компилятор все это проглотит, однако будет ругаться компоновщик (linker) на отсутствующие функции.
Пока что все понятно... А зачем тогда .dll? Компилятор же из .lib файла берет реализацию функций, почему он их не компилирует вместе с остальным кодом в один .exe? За ссылку спасибо, действительно очень неплохой ресурс. Чтобы потом не спрашивать, можно еще какие-нибудь или этот имеет самую полную информацию?
0
320 / 270 / 128
Регистрация: 24.05.2012
Сообщений: 629
07.10.2012, 12:14 4
Цитата Сообщение от HatoL Посмотреть сообщение
А зачем тогда .dll? Компилятор же из .lib файла берет реализацию функций, почему он их не компилирует вместе с остальным кодом в один .exe?
Не знаю, по идее, должен.
Цитата Сообщение от HatoL Посмотреть сообщение
Чтобы потом не спрашивать, можно еще какие-нибудь или этот имеет самую полную информацию?
http://ya.ru
0
07.10.2012, 12:14
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.10.2012, 12:14
Помогаю со студенческими работами здесь

Почему включение сторонних библиотек не рекомендуется?
Почему нежелательно включать в программу под linux ну например ncurses.h (сторонняя популярная...

Скрытие warning сторонних статических библиотек в g++
Здравствуйте! Я статически подключаю библиотеку (liblibrary.a), и тут компилятор gnu g++ выдает...

Отключение предупреждений при подключении сторонних библиотек
Доброго времени суток! возник вопрос - чисто теоретический - допустим, что я подключил библиотеку,...

Работа нескольких сторонних библиотек под одним интерфейсом
Здравствуйте! Хочу реализовать библиотеку, которая будет предоставлять интерфейс к некоему...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Что такое CQRS и как это реализовать на C# с MediatR
InfoMaster 15.01.2025
Концепция CQRS и её роль в современной разработке В современном мире разработки программного обеспечения архитектурные паттерны играют ключевую роль в создании масштабируемых и поддерживаемых. . .
Как настроить CI/CD с Azure DevOps
InfoMaster 15.01.2025
CI/ CD, или непрерывная интеграция и непрерывное развертывание, представляет собой современный подход к разработке программного обеспечения, который позволяет автоматизировать и оптимизировать процесс. . .
Как настроить CI/CD с помощью Jenkins
InfoMaster 15.01.2025
Введение в CI/ CD и Jenkins В современной разработке программного обеспечения непрерывная интеграция (CI) и непрерывная доставка (CD) стали неотъемлемыми элементами процесса создания качественных. . .
Как написать микросервис на Go/Golang с Kafka и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
Как написать микросервис с нуля на C# с RabbitMQ, CQRS и CI/CD
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
Как создать игру "Танчики" на Unity3d и C#
InfoMaster 14.01.2025
Разработка игр – это увлекательный процесс, сочетающий в себе творчество и технические навыки. В этой статье мы рассмотрим создание классической игры "Танчики" с использованием Unity3D и языка. . .
Организую платный онлайн микро-курс по доработке Android-клиента Telegram
_Ivana 14.01.2025
Официальная версия и распространенные форки не полностью устраивают? Сделай свою кастомную версию клиента! 4 занятия по 2 часа (2 недели пн, ср 19:00-21:00 по Москве). Первое вводное занятие. . .
Как создать приложение для фитнеса для iOS/iPhone на Kotlin
InfoMaster 14.01.2025
Создание собственного фитнес-приложения — это не только захватывающий, но и полезный процесс, ведь оно может стать вашим верным помощником на пути к здоровому и активному образу жизни. В современных. . .
Как создать приложение магазина для iOS/iPhone на Swift
InfoMaster 14.01.2025
Введение в разработку iOS-приложений Разработка приложений для iPhone и других устройств на базе iOS открывает огромные возможности для создания инновационных мобильных решений. В данной статье мы. . .
Это работает. Скорость асинхронной логики велика. Вопрос видимо останется в стабильности. Плата - огонь!
Hrethgir 13.01.2025
По прошлому проекту в Logisim Evolution https:/ / www. cyberforum. ru/ blogs/ 223907/ blog8781. html прилагаю файл архива проекта в Gowin Eda. Восьмибитный счётчик из сумматора+ генератор сигнала. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru