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

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

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

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

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

C++ Статические массивы
Статические библиотеки C++
статические массивы C++
C++ Массивы(статические)
C++ Линковка, статические, динамические библиотеки - матчасть
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Avazart
 Аватар для Avazart
6893 / 5133 / 250
Регистрация: 10.12.2010
Сообщений: 22,560
Записей в блоге: 17
01.11.2013, 00:34     Статические библиотеки #21
Цитата Сообщение от castaway Посмотреть сообщение
Для каждого компилятора может быть своя статическая библиотека. В "статике" есть свои плюсы как
Например ?

Чем это лучше нежели использовать сами исходники в проекте ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4837 / 2976 / 367
Регистрация: 10.11.2010
Сообщений: 11,008
Записей в блоге: 10
Завершенные тесты: 1
01.11.2013, 00:35     Статические библиотеки #22
Цитата Сообщение от Avazart Посмотреть сообщение
Например ?
Например что?
ninja2
 Аватар для ninja2
230 / 186 / 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 библиотеки подключал и все время это головняк.
castaway
Эксперт С++
4837 / 2976 / 367
Регистрация: 10.11.2010
Сообщений: 11,008
Записей в блоге: 10
Завершенные тесты: 1
01.11.2013, 00:43     Статические библиотеки #24
Цитата Сообщение от ninja2 Посмотреть сообщение
Не знаю у меня эти статические библиотеки сами не работают, обязательно приходиться dll кидать в System 32.
Видимо вы, вместе с Avazart, просто не знаете что такое статические библиотеки..
ninja2
 Аватар для ninja2
230 / 186 / 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 я не знаю ничего.
Avazart
 Аватар для Avazart
6893 / 5133 / 250
Регистрация: 10.12.2010
Сообщений: 22,560
Записей в блоге: 17
01.11.2013, 00:54     Статические библиотеки #26
Цитата Сообщение от castaway Посмотреть сообщение
Для каждого компилятора может быть своя статическая библиотека. В "статике" есть свои плюсы как и в "динамике".
Цитата Сообщение от Avazart Посмотреть сообщение
Например ?
Чем это лучше нежели использовать сами исходники в проекте ?
Цитата Сообщение от castaway Посмотреть сообщение
Например что?
Я про плюсы... какие плюсы статик либ ?

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

Цитата Сообщение от Avazart Посмотреть сообщение
Чем это лучше нежели использовать сами исходники в проекте ?
Далеко не всегда есть исходники, только статические библиотеки..
Avazart
 Аватар для Avazart
6893 / 5133 / 250
Регистрация: 10.12.2010
Сообщений: 22,560
Записей в блоге: 17
01.11.2013, 00:59     Статические библиотеки #29
Цитата Сообщение от castaway Посмотреть сообщение
Далеко не всегда есть исходники, только статические библиотеки..
Это да согласен, я в плане того что если сам создаешь эти либы, ибо легче предоставить исходники либо dll, нежели компилировать свою библиотеку под всеми компиляторами что бы создать статическую библиотеку для каждого.
castaway
Эксперт С++
4837 / 2976 / 367
Регистрация: 10.11.2010
Сообщений: 11,008
Записей в блоге: 10
Завершенные тесты: 1
01.11.2013, 01:04     Статические библиотеки #30
Цитата Сообщение от Avazart Посмотреть сообщение
Это да согласен, я в плане того что если сам создаешь эти либы ...
Ну тогда это зависит от твоего желания, статическая она будет, или динамическая.. Можно и лицензию к ней прикрутить.
Если пишешь для себя, то статическая как-никак кстати, ну это моё мнение.....
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
01.11.2013, 01:04     Статические библиотеки #31
Avazart, А может быть смешаные библиотеки? От например я по твоему ману curl подлючал так от там нужно было и .lib копировать и .h и .dll.
Так какая это библиотека получается статическая или динамическая или смешаная?
ValeryS
Модератор
6373 / 4839 / 440
Регистрация: 14.02.2011
Сообщений: 16,038
01.11.2013, 01:06     Статические библиотеки #32
Цитата Сообщение от Avazart Посмотреть сообщение
Например ?
Чем это лучше нежели использовать сами исходники в проекте ?
используешь ли ты исходники когда пишешь
cout<<?? sin()?? и прочие библиотечные функции?
Avazart
 Аватар для Avazart
6893 / 5133 / 250
Регистрация: 10.12.2010
Сообщений: 22,560
Записей в блоге: 17
01.11.2013, 01:08     Статические библиотеки #33
Цитата Сообщение от ninja2 Посмотреть сообщение
Avazart, А может быть смешаные библиотеки? От например я по твоему ману curl подлючал так от там нужно было и .lib копировать и .h и .dll.
То другой *.lib - то либ импорта, для импорта ф-ций из DLL
А есть именно "*.lib-статик" ( он весит даже по размеру больше)

Обычно либы идут в двух вариантах.
Но к примеру статический либ от VC++ я не могу использовать для С++Builder, поэтому приходится подгружать динамически из dll
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
01.11.2013, 01:17     Статические библиотеки #34
Цитата Сообщение от Avazart Посмотреть сообщение
То другой *.lib - то либ импорта для импорта ф-ций из DLL
А как определять либ импорта или нет? Или просто смотреть инструкцию по установке и делать как там пишут? Если нет dll, то значит обычная lib?

В принципе можно методом тыка, если просит .dll, то значит нужно, если не просит то не нужно.

А сколько бывает видов lib? Статическая раз, lib импорта 2, и все? lib - импорта это похоже и есть динамическая dll. Догадываюсь видимо без нее нельзя dll подключать dll, просто без lib. Ладно не буду тупые вопросы задавать, лучше прочить и разобраться самому . ну я вообще ноль за dll ничего не знаю.
Avazart
 Аватар для Avazart
6893 / 5133 / 250
Регистрация: 10.12.2010
Сообщений: 22,560
Записей в блоге: 17
01.11.2013, 01:18     Статические библиотеки #35
Цитата Сообщение от ninja2 Посмотреть сообщение
А как определять либ импорта или нет?
Либ импорта обычно лежат рядом с dll, а статик в отдельной папке названной соответственно.
castaway
Эксперт С++
4837 / 2976 / 367
Регистрация: 10.11.2010
Сообщений: 11,008
Записей в блоге: 10
Завершенные тесты: 1
01.11.2013, 01:19     Статические библиотеки #36
Бывают только статические библиотеки, и библиотеки импорта (те, что привязываются к динамическим). Других нет.
Avazart
 Аватар для Avazart
6893 / 5133 / 250
Регистрация: 10.12.2010
Сообщений: 22,560
Записей в блоге: 17
01.11.2013, 01:19     Статические библиотеки #37
Цитата Сообщение от ninja2 Посмотреть сообщение
лучше прочить и разобраться самому
Dynamic-Link Library: Теория + Практика
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
01.11.2013, 01:20     Статические библиотеки #38
Цитата Сообщение от Avazart Посмотреть сообщение
Либ импорта обычно лежат рядом с dll, а статик в отдельной папке названной соответственно.
А ясно, ну со временем разберусь, походу библиотеки приходиться часто подключать.
ValeryS
Модератор
6373 / 4839 / 440
Регистрация: 14.02.2011
Сообщений: 16,038
01.11.2013, 01:21     Статические библиотеки #39
Цитата Сообщение от ninja2 Посмотреть сообщение
Догадываюсь видимо без нее нельзя dll подключать dll, просто без lib.
можно
но это динамическая загрузка ( явная)
LoadLibrary() и GetProcAddress()
вот посмотри
http://citforum.ru/book/cook/dll0.shtml
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.11.2013, 01:23     Статические библиотеки
Еще ссылки по теме:

Статические библиотеки и Visual studio C++
статические функции C++
C++ Статические и динамические библиотеки

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

Или воспользуйтесь поиском по форуму:
Avazart
 Аватар для Avazart
6893 / 5133 / 250
Регистрация: 10.12.2010
Сообщений: 22,560
Записей в блоге: 17
01.11.2013, 01:23     Статические библиотеки #40
Цитата Сообщение от castaway Посмотреть сообщение
Если пишешь для себя, то статическая как-никак кстати, ну это моё мнение.....
Ну я отказался от такого мнения когда заметил что при переходе из одной версии С++Builder в более новую, библиотека lua собранная в статик либу ранее, перестала линковаться к проекту, и я долго искал причину тогда...

Кроме того отлаживать проект наверное легче когда есть исходники.
Yandex
Объявления
01.11.2013, 01:23     Статические библиотеки
Ответ Создать тему
Опции темы

Текущее время: 06:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru