Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.66/47: Рейтинг темы: голосов - 47, средняя оценка - 4.66
 Аватар для JohnBlack123
215 / 162 / 52
Регистрация: 09.12.2017
Сообщений: 520

Как добавить свою библиотеку в стандартные С++

26.01.2019, 10:49. Показов 10156. Ответов 5

Студворк — интернет-сервис помощи студентам
Доброго времени суток, уважаемые форумчане!
Недавно стало интересно, можно ли добавить свою библиотеку к стандартным библиотекам с++.
Чтобы не добавлять ее каждый раз в новом проекте в файлы заголовков по новому и только потом include'ить.
Насколько я понял, для этого ее нужно запихнуть во внешние зависимости.
По сути, я хочу использовать эту библиотеку постоянно, как <iostream> и без очередного добавления в файлы заголовком.
Подскажите, пожалуйста, как это сделать.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.01.2019, 10:49
Ответы с готовыми решениями:

Как добавить свою библиотеку?
Может глупый вопрос, но как присоеденить к проекту свою библиотеку? Я создал библиотеку, в ней статический клас с статическими методами. ...

Как добавить в свою программу библиотеку со своими функциями?
написал библиотеку, но не знаю как подключить ее к программе

Требуется добавить свою библиотеку
Ребята, подскажите, пожалуйста, как добавить свою библиотеку классов в Unity3d ? чтобы можно было её подключать к скрипту с помощью...

5
-47 / 3 / 0
Регистрация: 31.12.2017
Сообщений: 204
26.01.2019, 13:11
Цитата Сообщение от JohnBlack123 Посмотреть сообщение
Недавно стало интересно, можно ли добавить свою библиотеку к стандартным библиотекам с++.
Можно добавить в ту же папку, исключительно ради удобства. Но для каждого проекта всё равно придётся непосредственно указывать, какие библиотеки вы линкуете. Зачем вам линковать всё подряд?
Цитата Сообщение от JohnBlack123 Посмотреть сообщение
Чтобы не добавлять ее каждый раз в новом проекте в файлы заголовков по новому и только потом include'ить.
Что куда добавлять? Ваш вопрос непонятен. Как правило в IDE путь к папке с заголовочными файлами прописывается один раз, после чего можно спокойно include'ить всё, что лежит в этой папке.
Цитата Сообщение от JohnBlack123 Посмотреть сообщение
хочу использовать эту библиотеку постоянно, как <iostream>
iostream — не библиотека, а заголовочный файл.
1
 Аватар для JohnBlack123
215 / 162 / 52
Регистрация: 09.12.2017
Сообщений: 520
26.01.2019, 13:31  [ТС]
Цитата Сообщение от Jzx Посмотреть сообщение
Можно добавить в ту же папку, исключительно ради удобства. Но для каждого проекта всё равно придётся непосредственно указывать, какие библиотеки вы линкуете. Зачем вам линковать всё подряд?
Я не говорил о том, что желаю линковать все библиотеки. Имелось ввиду добавление моей библиотеки к стандартным библиотекам с/с++.
Цитата Сообщение от Jzx Посмотреть сообщение
Что куда добавлять? Ваш вопрос непонятен. Как правило в IDE путь к папке с заголовочными файлами прописывается один раз, после чего можно спокойно include'ить всё, что лежит в этой папке.
Чтобы использовать свою библиотеку нужно добавить ее в файлы заголовков (Visual Studio). Но, неудобство тут в том, что нужно в каждом новом проекте из раза в раз приходиться добавлять ее туда.
Цитата Сообщение от Jzx Посмотреть сообщение
iostream — не библиотека, а заголовочный файл.
спасибо.
0
-47 / 3 / 0
Регистрация: 31.12.2017
Сообщений: 204
26.01.2019, 13:55
Цитата Сообщение от JohnBlack123 Посмотреть сообщение
Чтобы использовать свою библиотеку нужно добавить ее в файлы заголовков (Visual Studio).
Проще говоря, я так понял, есть какая-то сторонняя библиотека и она сопровождается заголовками. Последние вам нужно явно указывать.
Цитата Сообщение от JohnBlack123 Посмотреть сообщение
Но, неудобство тут в том, что нужно в каждом новом проекте из раза в раз приходиться добавлять ее туда.
Нелегко работать в VS. Факт.
Цитата Сообщение от JohnBlack123 Посмотреть сообщение
Имелось ввиду добавление моей библиотеки к стандартным библиотекам с/с++.
В смысле? Включить какой-то посторонний объектный код в стандартную библиотеку? Сделать-то можно, конечно, только не понятно, зачем.
0
309 / 221 / 74
Регистрация: 23.05.2011
Сообщений: 981
26.01.2019, 14:14
Вы можете написать скрипт, который сразу создаёт проект с прилинкованными к нему либами, и создавать проекты таким образом.
1
 Аватар для eva2326
1673 / 501 / 107
Регистрация: 17.05.2015
Сообщений: 1,518
26.01.2019, 15:46
Лучший ответ Сообщение было отмечено JohnBlack123 как решение

Решение

Цитата Сообщение от JohnBlack123 Посмотреть сообщение
можно ли добавить свою библиотеку к стандартным библиотекам с++.
1.
Пользовательские библиотеки делятся на:
Code
1
2
3
4
Debug|Win32
Debug|x64
Release|Win32
Release|x64
При этом, они так же бывают со статическим рантаймом или динамическим.
В виде .lib или в виде .dll.

2.
Приходим к пониманию, что стандартные библиотеки так же делятся на дебажные, и релизные.
На 32 битные и 64 битные.
На .dll и .lib
На статический рантайм и на динамический.

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

3.
Например, для внеднерения своей .lib
Находим любую стандартную библиотеку во всех обозначенных выше конфигурациях.
Для Visual Studio в качестве онной можно задействовать msvcrt.lib

Важно понимать, что если библиотека с таким именем находится в каталоге amd64,
то это - 64 битная версия.

Я хочу сказать, что по названию каталогов, где располагается библиотека,
можно догадаться какая у неё битность.

Как различить debug или relese - предмет особой олимпиады.
Для debug должны поставляться .pdb файлы с отладочной информацией.


4.
Теперь осуществляем внедрение.
Для этого разбираем стандартную библиотеку на запчасти.
Используем утилиту lib.exe, идущую в составе компилятора

lib.exe умеет разбирать .lib на .obj,
из которых она состоит,
и собирать их заново в итоговый .lib

Задача сводится к тому, чтобы разобрать стандартную и пользовательскую .lib
на запчасти и снова собрать в одну большую стандартную .lib

вот так выглядит эта процедура на cmake

Code
1
2
#--- запускаем линкер, который разберет библиотеки на запчасти и заново собирет из них одну большую
add_custom_target(combined ALL COMMAND lib /out:combined.lib  ${LIBRARIES}  $<TARGET_FILE:${PROJECT_NAME}> )
5.
После проделанных манипуляций имеем стандартную .lib,
которая в своём составе включает пользовательскую библиотеку.

Теперь каждый раз, когда будет выполняться сборка проекта,
и компилятор автоматически подключит стандартную библиотеку,
вместе с ней автоматом подключится и пользовательский код.

6.
Все обозначенное выше необходимо проделать во всех версиях.

7.
С динамическими библиотеками дела обстоят гораздо хуже.
Мало того, что на пользовательской машинке dll может поставляться откуда то извне,
(не из состава Visual Studio), так их просто пропатчить сложнее, чем статическую .lib

8.
Не обходимо учесть, что рантайм может быть динамическим/статическим,
и....

9.
Думаю к этому моменту у любого здравомыслящего человека возникнет мысль:
"а может ну его нафиг????"

10.
Подключайте библиотеки к своим проектам нормальным штатным способом,
и будет вам счастье.

11.
Не нужно заниматься всяким извращением.

Добавлено через 13 минут
Цитата Сообщение от JohnBlack123 Посмотреть сообщение
Недавно стало интересно, можно ли добавить свою библиотеку к стандартным библиотекам с++.
В Visual Studio можно очень легко подмешать свою .lib
Для этого:

1.
Выполняем поиск место расположения стандартного заголовка.
Например - <iostream>

2.
В этом же каталоге размешаем свой пользовательский хэдер.

3.
Если вместе с хэдэром в сборку необходимо включить .lib файл пользовательской библиотеки,
тогда в пользовательском хэдере необходимо прописать:
C++
1
#pragma comment (lib, "library.lib")
Вместо library.lib нужно пропечатать путь к вашей библиотеке.
Путь задается относительно хедера.

4.
PROFIT ???!!!
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.01.2019, 15:46
Помогаю со студенческими работами здесь

Не могу добавить Forms в свою библиотеку
using System.Windows.Forms; Начинает кричать что &quot; System_Windows_Forms эта ссылка была экспортирована из сборки NET и не может быть...

Добавить свою библиотеку из фраз и прочитать какое либо предложение из файла
#include &lt;iostream&gt; #include &lt;string&gt; #include &lt;Windows.h&gt; #include &quot;movie_lines.txt&quot;// вот файл, в котором есть несколько...

Как написать свою библиотеку?
Очень нужна помощь в данном вопросе. Стоит задача написать конвертер из формата xml в формат hl7. По hl7 в интернете толком ничего нет....

Как создать свою библиотеку?
Много времени потратила на поиски какой-нибудь информации о том, как создать статическую библиотеку(не динамическую). Кто-нибудь может...

Как создать свою библиотеку
Есть несколько понятий в которых путаюсь. библиотека - какой-то файл заголовочный файл - файл с объявлениями (описаниями) как...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru