Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915

Статическая lib библиотека

26.12.2020, 12:40. Показов 2025. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте,

Подскажите пожалуйста, вот предположим собрал я статическую библиотеку из одной функции в visul studio, условно:
C++
1
2
3
4
int my_summ_func(int my_int1, iny my_int2)
{
return my_int1+my_int2;
}
Вот появились два нужных файла: заголовочный .h и сама библиотека .lib.

Вот я привильно ли понимаю, что теперь эти два файла можно подключать к С++ проекту на любом с++ компиляторе, на любой ОС, будь то Windows, Linux, Android итд... ?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.12.2020, 12:40
Ответы с готовыми решениями:

Как в VS 2015 устранить ошибку LNK 1104 cannot open file 'fltkd.lib wsock32.lib comct132.lib fltkjpegd.lib'?
как устранить ошибку LNK 1104 в visual studio community 2015? пункта C/C++ в properties нету Можете сказать куда его перенесли или...

Статическая библиотека
lib main.h namespace x { int __stdcall WindowCreate( ... ); } main.cpp

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

7
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
26.12.2020, 13:37
Цитата Сообщение от Optimus11 Посмотреть сообщение
Вот я привильно ли понимаю, что теперь эти два файла можно подключать к С++ проекту на любом с++ компиляторе, на любой ОС, будь то Windows, Linux, Android итд... ?
Если ты писал переносимый код, то *.h файл у тебя будет работать на любой платформе, но библиотеки для Windows, Linux, Android итд не имеют двоичной совместимости так как для каждой платформы как правило свой ABI.

Добавлено через 5 минут
Цитата Сообщение от _stanislav Посмотреть сообщение
Linux, Android
на счет Линукса и Андроида не уверен.
1
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
26.12.2020, 14:00  [ТС]
Цитата Сообщение от _stanislav Посмотреть сообщение
Если ты писал переносимый код, то *.h файл у тебя будет работать на любой платформе, но библиотеки для Windows, Linux, Android итд не имеют двоичной совместимости так как для каждой платформы как правило свой ABI.

Добавлено через 5 минут

на счет Линукса и Андроида не уверен.
То есть гарантировано, нужно открывать этот мой условный проект в каждой ОС и собирать статическую библиотеку заново через конкретную ОС ?

Я это к чему спрашиваю, я ппосто пытаюсь понять хотя бы примерно на этом простом примере, что такое этот Cmake и для чего он нужен.
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
26.12.2020, 14:17
Цитата Сообщение от Optimus11 Посмотреть сообщение
что такое этот Cmake и для чего он нужен
CMake (от англ. cross-platform make) — это кроссплатформенная система автоматизации сборки программного обеспечения из исходного кода. CMake не занимается непосредственно сборкой, а лишь генерирует файлы управления сборкой из файлов CMakeLists.txt

То есть, есть какой то набор файлов, программа CMake генерирует из этих фалов другие файлы, в зависимости от настроек, для того что бы из получившихся файлов можно было собрать приложение для конкретной платформы.
1
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
26.12.2020, 15:37
Лучший ответ Сообщение было отмечено Optimus11 как решение

Решение

Цитата Сообщение от Optimus11 Посмотреть сообщение
Вот я привильно ли понимаю, что теперь эти два файла можно подключать к С++ проекту на любом с++ компиляторе, на любой ОС, будь то Windows, Linux, Android итд... ?
конечно можешь.
ведь закон этого не запрещает.

может быть ты вопрос не правильно сформулировал?
может ты имел ввиду: будет ли такая сборка правильно работать?
нет, не будет.

виндузятный lib под линуксом не взлетит.
и наоборот.

да и вообще:
в общем случае, библиотека, собранная одним компилятором,
не совместима с библиотекой, собранной другим компилятором.

так например, ты можешь под виндовс собрать библиотеку компилятором mingw
в дальнейшем, ты не сможешь линковать её для сборки компилятором cl (Visual Studio)

более того: совместимости нет даже между компиляторами Visual Studio.
так например, у меня был случай:
сборка gtest-msvc2017-release успешно слинковалась с test-msvc2019-release.
а вот дебаг провалился:
gtest-msvc2017-debug отказался линковаться с test-msvc2019-debug.


за совместимость библиотек отвечает так называемый abi

для языка с++ он не стандартизирован.
это означает, что не гарантируется никакой совместимости между двумя разными компиляторами.
(зато она гарантируется для языка си, но это уже отдельная тема)

Добавлено через 35 минут
Цитата Сообщение от Optimus11 Посмотреть сообщение
То есть гарантировано, нужно открывать этот мой условный проект в каждой ОС и собирать статическую библиотеку заново через конкретную ОС ?
откуда ты взял совоё "гарантированно" ?
кем гарантированно?

и что значит "через ОС" ?
может ты имел ввиду "собирать на конкретной платформе".
ну или "для конкретной платформы" ?
ну или "под конкретную платформу" ?

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

следи за тем, что пишешь.
мысли нужно изгалать грамотно.

продукт собирается под каждую заявленную платформу.

Цитата Сообщение от Optimus11 Посмотреть сообщение
То есть гарантировано, нужно открывать этот мой условный проект в каждой ОС и собирать Я это к чему спрашиваю, я ппосто пытаюсь понять хотя бы примерно на этом простом примере, что такое этот Cmake и для чего он нужен.
простой пример:
допустим, ты разрабатываешь библиотеку используя Visual Studio.

я решил присоединиться к твоей разработке.
но вот беда - у меня нету Visual Studio.
и я не хочу её устанавливать.
я привык работаеть в QtCreator.

как быть?

Кликните здесь для просмотра всего текста
если проект разрабатывается с поддержкой cmake,
то он не зависит от IDE.

у cmake можно запросить проект для нужной тебе IDE:

"cmake, хочу Visual Studio"
"cmake, хочу QtCreator"
"cmake, хочу какую-нибудь-ещё-IDE"

и cmake сгенерирует для меня проект указанной мною IDE.

cmake поддерживает все топовые IDE, платформы, и компиляторы.

это позволяет разработчикам не зависеть от среды.
то есть не зависить ни от компилятора, ни от IDE,
ни даже от платформы (при условии, что сам код кросс-платформенный)

а завтра мы решим переползти на линуксы,
и просто попросим cmake сгенерировать для нас проект
какого нибудь тамошнего Eclipse, для gcc
1
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
26.12.2020, 16:01  [ТС]
Цитата Сообщение от hoggy Посмотреть сообщение
можно сказать: "для винды", или "на винде", "под винду".
но никто ж не говорит "через винду"

следи за тем, что пишешь.
мысли нужно изгалать грамотно.

продукт собирается под каждую заявленную платформу.
Прошу прощения, я не специально.


Цитата Сообщение от hoggy Посмотреть сообщение
если проект разрабатывается с поддержкой cmake,
то он не зависит от IDE.
В Visual Studio 2019 появилась вот такая штука:
Проект Cmake
Создавайте современные кроссплатформенные приложения С++, не зависящие от файлов SLN или VCXPROJ.
Это в эту тему получается ? То есть если нужно создать библиотеку, с необходимостью подключать ее к разным компиляторам С++ и на разных платформах, то нужно через проект Cmake делать ?
0
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
26.12.2020, 16:09
Цитата Сообщение от Optimus11 Посмотреть сообщение
В Visual Studio 2019 появилась вот такая штука:
Проект Cmake
Создавайте современные кроссплатформенные приложения С++, не зависящие от файлов SLN или VCXPROJ.
Это в эту тему получается ? То есть если нужно создать библиотеку, с необходимостью подключать ее к разным компиляторам С++ и на разных платформах, то нужно через проект Cmake делать ?
Это означает, что вы сможете кроссплатформенно собирать ваш проект на\для разных ОС\компиляторов. Т.е., например, с CMake вы сможете на windows собрать проект через Visual Studio, а на linux собрать этот же проект через make. При этом, если все сделано правильно, ничего менять в самом проекте и в настройках его сборки не потребуется.
1
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
26.12.2020, 16:31
Цитата Сообщение от Optimus11 Посмотреть сообщение
Это в эту тему получается ?
да.
осознав потенциал cmake,
разработчики IDE начали оказывать ему всяческое содействие.

Цитата Сообщение от Optimus11 Посмотреть сообщение
То есть если нужно создать библиотеку, с необходимостью подключать ее к разным компиляторам С++ и на разных платформах, то нужно через проект Cmake делать ?
да.
пишешь сценарий сборки на языке программирования cmake.
а потом уже сможешь запрашивать Visual Studio,
или что ты там любишь использовать.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.12.2020, 16:31
Помогаю со студенческими работами здесь

Статическая библиотека VS2017
Здравствуйте, Подскажите пожалуйста, можно ли, и если можно то как в VS2017 собрать статическую lib библиотеку следующим образом: ...

Ошибки,статическая библиотека
Не понимаю,что не нравится компилятору. Пишет,что для "{" требуется объявление.. И если кто-то разбирается в создании статических...

Статическая библиотека к имеющейся программе
Ребят. Есть лаба (архив прложен к сообщению) Нужно сделать эту же лабу, только чтобы модули находились в статической библиотеке. Как я...

Статическая библиотека и ссылки на процедуры
Доброе время суток. Столкнулся с проблемой: необходимо из метода класса в статической библиотеке обратиться к процедуре, описанной вне...

Статическая библиотека MVS errorLNK1120
Нужно создать статическую библиотеку в MVS. появляется ошибка, для наглядности привожу простой пример. Создаю решение Х, тип приложения...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
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 . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru