Как сделать линковку в проекте на с++ Visual Studio?
Я полазал по инету и нейро на тему линковка так как хочу чтобы моя прога использующая библиотеку tgbot-cpp работала у других не зависимо от того Есть dll файлы на компе там какие то или нет. Так вот я пытался взять с библиотеки все cpp и h и несколько раз создать lib но постоянно выдает около 200 ошибок До этого исправил проблему С1010 И после всеравно lib не создавалась Научите правильно создавать статическую библиотеку для процесса линковки пожалуйста.
Дмитрий, если вы имеете виду что при загрузке библиотеки TgBot-cpp у меня автоматически была библиотека, спешу сообщить что я бы не парился тогда сей час. Суть и в заключается в том что я пытаюсь сделать ее из-за её отсутствия(
mayton2019, давайте сделаем так: Можете дать подробно описанную инструкцию как собрать из готовой библиотеки статический вариант А если я все сделаю по инструкции и выдаст error какой то, обязательно сообщю. Так как ту библиотеку с error 200+ Уже собирать пытался раз 5 в итоге удалил (я удалил статическую библиотеку которую сам пытался собрать если что а та оригинальная на месте).
Если кто то знает как собрать из библиотеки для с++ статическую lib библиотеку, прошу инструкцию пожалуйста, так как по инструкции с инета и нейро все тоже самое(
mayton2019, смотрите я не могу создать статическую библиотеку Если я сей час в Висуал на с++ создам статическую библиотеку и туда все cpp и h файлы добавлю от основной библиотеки tgbot это будет верным процессом создания или нет?
Дмитрий, Изначально у меня не работал мой exe на других пк так как просила dll которые при компиляции создаются с exe вместе и покопавшись удалось найти 2 решения: 1 это статическая линковка и 2 как я и поступил сначала это все dll и exe архивировать и отправлять ) Теперь же понял что нужно заняться статической линковкой. Покопавшись еще понял что нужно в моем случае tgbot.lib и подключить его к проекту, но её просто нету сколько бы не искал( И вот пришел сюда узнать что делать )?
Ars_15,
1. Библиотека умеет сама собираться в статическую библиотеку с помощью собственного CMakeLists.txt. Никакой отсебятины делать не нужно. Можешь сам собрать ее при желании, надо только немного разобраться с cmake. А потом подсунуть lib файлы и заголовки твоему проекту.
2. Судя по описанию на github, библиотека есть в репозитории vcpkg, а следовательно ее можно установить в виде статической библиотеки средствами vcpkg. Рекомендую этот путь. В readme библиотеки есть описание того как поставить ее в vcpkg. Я правда давно его не использовал, не уверен поставится ли в таком варианте статическая версия или динамическая. Но средствами vcpkg можно поставить статическую. Разберись с vcpkg - это пакетный менеджер, часто используется совместно с MSVS.
На вскидку не помню. Давно уже не пользовался. Но точно знаю, что там это делается, в свое время сам это использовал. В документации по vcpkg указано, там надо другой "триплет" применять, на сколько я помню. vcpkg ведь не устанавливает бинарники библиотек, он собирает их на месте из исходников, так что ему в принципе пофиг собирать динамическую или статическую либу.
И да я сделал на Visual Studio lib библиотеку пытаюсь связать с проектом но выдает
Не понятно при чем тут obj файл. Статическая либа для микросовтовского компилятора идет в lib файле и больше ничего не нужно (кроме заголовков). Похоже ты что-то делаешь не так.
Вообще для подключения любых библиотек есть несколько простых шагов которые надо выполнить, шаги эти общие для любого компилятора, но детали могут отличаться. Т.к. ты используешь IDE, то на это то же надо сделать скидку, но в любом случае все настройки IDE в этой части в итоге преобразуются в соответствующие опции компилятора.
Расписывал тут несколько раз это, например тут.
Да, кстати, vcpkg по моему, по умолчанию собирает и статическую и динамическую версии библиотек. Сами файлы библиотек можно поискать в каталоге vcpkg, там все довольно просто устроено. В статической библиотеке будет 1 большой файл lib, в динамической 2 файла: маленький lib и большой dll.
Другое дело, что компилятор, обычно, если найдены обе версии библиотеки использует динамическую по умолчанию.
В связи с выше сказанным можно пойти двумя способами: удалить динамическую версию библиотеки (или ставить только статическую) или заставить компилятор (опциями) использовать именно статическую версию этой библиотеки.
Как второй вариант сделать для микросовтовского компилятора я не в курсе, гугли.
Ars_15, Почитай что-нибудь по интеграции библиотек из vcpkg в проект MSVS. Там у него есть какой-то стандартный механизм, который просто добавляет пути поиска библиотек и заголовочников из репы vcpkg в MSVS.