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

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

26.01.2019, 10:49. Показов 10075. Ответов 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,517
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
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru