Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
anonym17
2 / 0 / 1
Регистрация: 31.10.2013
Сообщений: 21
#1

Статические библиотеки - C++

31.10.2013, 18:27. Просмотров 1400. Ответов 44
Метки нет (Все метки)

Всем доброго!
Есть вопрос про статические либы.

Допустим, у нас есть статическая либа A-s.lib (/MT)
Его внедряем в новый проект-библиотекарь, т.е которая будет использовать A-s.lib. После на выходе мы имеем B-s.lib. (/MT)

Внимание вопрос: если я буду использовать B-s.lib в своей программе, то нужно ли внедрять в компоновщик и тащить с собой A-s.lib, кроме хедеров? Короче, будет ли библиотека B-s.lib содержать методы A-s.lib?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.10.2013, 18:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Статические библиотеки (C++):

Статические библиотеки - C++
Как создать статическую библиотеку? Использую в турбо с. Я чего-то не то делаю? Создала файл LIB.H с кодом #ifndef MY_COOL_LIBRARY...

Статические и динамические библиотеки - C++
Здравствуйте! Возник вопрос в понимании задания, подскажите пожалуйста То есть в библиотеке должна динамически выделяться память под...

Статические библиотеки и Visual studio - C++
1) Создала новый проект как статическая библиотека без предкомпилированных заголовков. 2) Написала некоторые функции. 3) Выставила...

Линковка, статические, динамические библиотеки - матчасть - C++
Парился сегодня целый день, компиля cUrl c MinGW с поддержкой https - т.е. с OpenSSL и zlib. Долго мучался, ив процессе понял, что имею...

Компиляция, линковка, статические и динамические библиотеки - C++
Доброго вам времени суток. Обращаюсь к вам со списком близких по теме вопросов. Если вам не сложно, хотя бы напишите URL или книгу, где об...

про библиотеки в VS C++ (какие библиотеки нужны для функций 'cout' и 'cin') - C++
какие библиотеки нужны для функций 'cout' и 'cin' ???

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
01.11.2013, 00:19 #16
Цитата Сообщение от anonym17 Посмотреть сообщение
Допустим, у нас есть статическая либа A-s.lib (/MT)
Его внедряем в новый проект-библиотекарь, т.е которая будет использовать A-s.lib. После на выходе мы имеем B-s.lib. (/MT)
Внимание вопрос: если я буду использовать B-s.lib в своей программе, то нужно ли внедрять в компоновщик и тащить с собой A-s.lib, кроме хедеров? Короче, будет ли библиотека B-s.lib содержать методы A-s.lib?
Токо читал про статические либы в VS. От пишут что библиотека состаит из набора объектных файлов obj можно создать самому библиотеку lib использовать для этого lib.exe и передать на вход ему файлы file.obj file1.obj .... filen.obj и на выходе мы получим библиотеку .lib. Так же можно lib разбить обратно на obj и даже вроде из нее удалить какой нить obj. И создатели библиотек стараются разбить на минимальные единицы .obj, что б каждой функции соответствовал один .obj, это сделано для того что бы при использовании какой нить функции мы подлючили только один нужный obj от одной функции, а не с левыми, которые не используются.

В общем если у тебя эта прога просто создает одну библиотеку из другой, ну хз. мб она выборочно повключает в эту новую все объектные файлы нужные для работы.

Если у тебя есть новый файл, то ты можешь просто его разбить на объектные файлы и посмотреть что в ней содержиться lib.exe - это прога которая разбивает библиотеки lib, на объектные файлы и создает из них. Просто разбей первый файл A-s.lib и потом второй B-s.lib и посмотри что в них находиться!!! Не помню команду как разбивать ключ не помню.
0
Avazart
Эксперт С++
7189 / 5363 / 280
Регистрация: 10.12.2010
Сообщений: 23,669
Записей в блоге: 17
01.11.2013, 00:24 #17
Если я не ошибаюсь, то в статических либах зависимостей не будет (кроме зависимости в хедерах) в отличии от динамических.
1
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
01.11.2013, 00:25 #18
Глянул в книге, там нужно с под командной строки зайти и прописать lib.exe /LIST > myInfoFile.txt (vs2006) и оно выведет в файл myInfoFile.txt все названия .obj файлов. Как правило библиотеки деляться по функциям, для каждой функции создается свой объектный код. От разложи и посмотри содержимое, сравни.

А по простому просто попробуй не подключить, если будет работать значит не нужно!!!
0
Avazart
Эксперт С++
7189 / 5363 / 280
Регистрация: 10.12.2010
Сообщений: 23,669
Записей в блоге: 17
01.11.2013, 00:28 #19
Честно говоря я не вижу смысла в статических либах, ведь их не удастся "прикрутить" к другому компилятору, в отличии от DLL.
0
castaway
Эксперт С++
4884 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
01.11.2013, 00:33 #20
Для каждого компилятора может быть своя статическая библиотека. В "статике" есть свои плюсы как и в "динамике".
0
Avazart
Эксперт С++
7189 / 5363 / 280
Регистрация: 10.12.2010
Сообщений: 23,669
Записей в блоге: 17
01.11.2013, 00:34 #21
Цитата Сообщение от castaway Посмотреть сообщение
Для каждого компилятора может быть своя статическая библиотека. В "статике" есть свои плюсы как
Например ?

Чем это лучше нежели использовать сами исходники в проекте ?
0
castaway
Эксперт С++
4884 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
01.11.2013, 00:35 #22
Цитата Сообщение от Avazart Посмотреть сообщение
Например ?
Например что?
0
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
01.11.2013, 00:39 #23
Цитата Сообщение от Avazart Посмотреть сообщение
Честно говоря я не вижу смысла в статических либах, ведь их не удастся "прикрутить" к другому компилятору, в отличии от DLL.
За dll не читал, но у меня почему то без dll не работает с одними статическими либами, приходиться в windows/System32 скидывать dll тогда работает, а без них нихочет, еще эти dll разные бывать для дебага и для релиза, от если dll либу для дебага в компонощике релиза прописать, то программа просто вылетает у меня просто вылетает проект с openCV я туда кругом либы прописал named.dll с буковкой d это походу означает для дебага, а нужно было для релиза без буквы d прописать правильно ж????

Добавлено через 3 минуты
Цитата Сообщение от castaway Посмотреть сообщение
Для каждого компилятора может быть своя статическая библиотека. В "статике" есть свои плюсы как и в "динамике".
Не знаю у меня эти статические библиотеки сами не работают, обязательно приходиться dll кидать в System 32.
Три действия делаю когда библиотеки устанавливаю:
1. Копирую в include .h - файлы.
2. Копирую в lib lib-файлы.
ВЫ от говорите должно работать? А от фиг там приходиться еще и
3. Копирую в System32 все dll.
Тогда только работает.

Ну я с подключением библиотек недавно сталкивался всего 3 библиотеки подключал и все время это головняк.
0
castaway
Эксперт С++
4884 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
01.11.2013, 00:43 #24
Цитата Сообщение от ninja2 Посмотреть сообщение
Не знаю у меня эти статические библиотеки сами не работают, обязательно приходиться dll кидать в System 32.
Видимо вы, вместе с Avazart, просто не знаете что такое статические библиотеки..
0
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
01.11.2013, 00:52 #25
Цитата Сообщение от anonym17 Посмотреть сообщение
Не путаюсь я, вроде.
Вот набросал, можно ли обойтись только первым вариантом?
нельзя если не путаешь, одни заголовочные файлы подключать нельзя нужно и объектный код подключать, откуда он возьмется если ты .lib не подключишь?

Добавлено через 6 минут
Цитата Сообщение от castaway Посмотреть сообщение
Видимо вы, вместе с Avazart, просто не знаете что такое статические библиотеки..
Не знаю как Avazart, но я только седня узнал, интернет выключили, так я 150 страниц по программированию в виндовс прочитал и там от про них была тема, статическая библиотека (.lib) должна работать сама по себе, она просто состоит из объектных файлов. Это просто зборище объектный файлов, от например у нас есть заголовочный файл f1.h с объявлениями функций и есть f1.cpp с определениями и есть f2.h и f2.cpp соответственно. От программисты - создатели библиотек делают из .cpp фалов сначала объектный код, f1.obj и f2.obj, а затем из этих файлов составляют lib_f1_f2.lib где находяться эти объектные файлы, так от получается библиотека.
Я ж токо читал, так что я знаю, поэтому dll для работы по идее не нужна, ну за dll я не знаю ничего.
0
Avazart
Эксперт С++
7189 / 5363 / 280
Регистрация: 10.12.2010
Сообщений: 23,669
Записей в блоге: 17
01.11.2013, 00:54 #26
Цитата Сообщение от castaway Посмотреть сообщение
Для каждого компилятора может быть своя статическая библиотека. В "статике" есть свои плюсы как и в "динамике".
Цитата Сообщение от Avazart Посмотреть сообщение
Например ?
Чем это лучше нежели использовать сами исходники в проекте ?
Цитата Сообщение от castaway Посмотреть сообщение
Например что?
Я про плюсы... какие плюсы статик либ ?

Цитата Сообщение от castaway Посмотреть сообщение
Видимо вы, вместе с Avazart, просто не знаете что такое статические библиотеки..
Ну или Вы не этого не знаете...
0
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
01.11.2013, 00:56 #27
anonym17, И вообще тебе что не все рамно сколько ты .lib подключишь, компоновщик влюбом случае выберет и соберет в exe нужные ему определения функций, добавит нужные obj из .lib все либы у тебя не влючется только то что нужно , то что используется. Так что подключай хоть сто lib это на размер исполняемого файла не повлияет.
0
castaway
Эксперт С++
4884 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
01.11.2013, 00:56 #28
Цитата Сообщение от Avazart Посмотреть сообщение
Я про плюсы, какие плюсы статик либ ?
С ними нет зависимостей.

Цитата Сообщение от Avazart Посмотреть сообщение
Чем это лучше нежели использовать сами исходники в проекте ?
Далеко не всегда есть исходники, только статические библиотеки..
0
Avazart
Эксперт С++
7189 / 5363 / 280
Регистрация: 10.12.2010
Сообщений: 23,669
Записей в блоге: 17
01.11.2013, 00:59 #29
Цитата Сообщение от castaway Посмотреть сообщение
Далеко не всегда есть исходники, только статические библиотеки..
Это да согласен, я в плане того что если сам создаешь эти либы, ибо легче предоставить исходники либо dll, нежели компилировать свою библиотеку под всеми компиляторами что бы создать статическую библиотеку для каждого.
0
castaway
Эксперт С++
4884 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
01.11.2013, 01:04 #30
Цитата Сообщение от Avazart Посмотреть сообщение
Это да согласен, я в плане того что если сам создаешь эти либы ...
Ну тогда это зависит от твоего желания, статическая она будет, или динамическая.. Можно и лицензию к ней прикрутить.
Если пишешь для себя, то статическая как-никак кстати, ну это моё мнение.....
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.11.2013, 01:04
Привет! Вот еще темы с ответами:

Как включить библиотеки в исполняемый файл, чтобы не приходилось ставить библиотеки (Eclipse) - C++
Как включить библиотеки в конечный EXE как это сделано в bilder, чтобы не приходилось ставить библиотеки.

Статические массивы - C++
int a; cout << sizeof(a) << endl; cout << a << endl; Добрый день. Почему выводится, что sizeof(a)=16 байт. a же это адрес,...

Статические функции - C++
Начинаю изучать С++, написал код, но не хочет работать, подскажите, в чем может быть ошибка. class Sequence { public: Sequence(int...

Статические массивы - C++
Перевести в веденой строке все буквы из нижнего регистра в верхний?? Пожалуйста помогите!!! Добавлено через 56 секунд Пожалуйста!!!


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
01.11.2013, 01:04
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru