Как добавить внешние библиотеки для компиляции в VС++?

Я работал с несколькими компиляторами Visual С++ (VC97, VC2005, VC2008), и я не нашел четкого способа добавления внешних библиотек в свои сборки. Я исхожу из фона Java, и в Java-библиотеках есть все!

Насколько я понимаю из компиляции проектов с открытым исходным кодом в моем ящике Linux, необходимо включить весь исходный код для библиотеки, за исключением тех .so файлов.

Также я слышал о статических библиотеках .lib и DLL-динамических библиотеках, но я все еще не совсем уверен, как добавить их в сборку и заставить их работать. Как это можно сделать?

Ответ 1

Я думаю, вы можете попросить механиков о том, как добавить lib в проект/решение в среде IDE...

В 2003, 2005 и 2008 годах это нечто похожее на:

из проводника решений - щелкните правой кнопкой мыши по проекту выберите свойства (обычно последний) Я обычно выбираю все конфигурации вверху... Linker Ввод

Дополнительные зависимости идут там

Мне хотелось бы сделать снимок экрана для этого.

В VC6 это другой медведь со мной, поскольку все это из памяти

параметров проекта или свойств, а затем перейдите на вкладку компоновщика и найдите, где можно добавить библиотеки.

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

Ответ 2

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

То, что вы обычно делаете, это сборка библиотек раздельно, один раз и поместить созданные файлы lib/dll и файлы заголовков в место, к которому могут обращаться проекты, требующие доступа библиотеки. Общая идиома заключается в том, чтобы поместить файлы заголовков в include, статические библиотеки в lib и динамические библиотеки в подкаталоги bin для вашей скомпилированной библиотеки.

Причина, по которой вы обнаружили, что большинство библиотек С++ предоставлены в форме исходного кода, а не в прекомпилированной форме, состоит в том, что каждый компилятор С++ имеет определенную свободу в отношении того, как манипулировать именами символов и т.д., а полученный объектный код не переносится через компиляторы, не говоря уже о операционных системах. Поэтому отправка скомпилированного кода не имеет смысла для многих приложений. Вы иногда найдете его с С++-библиотеками с закрытым исходным кодом в Windows (библиотеки C - это совсем другое дело), ​​но тогда поставщик должен будет предоставить скомпилированную версию для каждого типа сборки (Release, Debug, 32 bit, 64 бит и т.д.) и целевой компилятор (различные версии Visual Studio требуют разных двоичных файлов, тогда есть Borland и множество других компиляторов), и это быстро становится кошмаром для поддержки...

Когда вы берете библиотеку и создаете ее как динамическую библиотеку в Windows (т.е. DLL), компилятор/компоновщик обычно генерирует для него статическую библиотеку импорта (это же имя, только с расширением .lib), Когда вы связываете проект с динамической библиотекой, вы указываете файл .lib как зависимость от библиотеки. Связывание приложения с указанной библиотекой импорта позволяет компоновщику записывать зависимость от DLL файла, а также какие символы он должен ожидать от библиотеки.

Заставляя их работать - в смысле вашей программы, находящейся в Windows, обычно требуется, чтобы DLL файл был либо в том же каталоге, что и исполняемый, либо доступен через переменную среды PATH и ее эквивалент в Visual С++.

Ответ 3

Ok. обычно вы не хотите вручную загружать динамические библиотеки, но если вы это сделаете, посмотрите в LoadLibrary. вам необходимо вызвать другие функции, чтобы получить адреса указателя на функцию и т.д. Как правило, как это работает, даже файлы DLL имеют .lib файлы для них.. поэтому, когда они нужны, они просто загружаются автоматически.

как вы указываете .lib файлы/статические библиотеки в разделе "Свойства/компоновщик/вход- > Дополнительные зависимости". в gui.

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

Ответ 4

Для добавления библиотек это очень просто (если это то, что вы имеете в виду) Project → properties → configure properties → Linker → Input → дополнительные библиотеки. Подойдите к одной из библиотек и нажмите enter. Вы освободили место для добавления библиотеки, eay as pie:)

Ответ 5

Для добавления внешних библиотек или библиотечных каталогов в проекте VС++ выполните следующие действия:
1- Перейдите к своим свойствам проекта (это можно сделать, щелкнув правой кнопкой мыши по проекту в вашем решении)
2- Выберите 'Linker' > 'General' > Дополнительные каталоги библиотек
3- Нажмите на пустую панель перед "Дополнительными библиотечными каталогами", а VS позволяет добавлять каталоги к своим по умолчанию, в которые он ищет нужные библиотеки.

Ответ 6

Что значит "добавить их в сборку"?

В VC в рамках решения вы можете иметь проект, выход которого представляет собой библиотеку (статический или динамический), а затем другой проект, который зависит от вывода и использует его (т.е. ссылки на него).

В нашей базе кода у нас обычно есть отдельное решение для каждой библиотеки или набора библиотек, а затем связать их с целевыми проектами. Большинство наших целевых проектов - это управляемые сборки - те, которые нуждаются в неуправляемой функциональности, обычно записываются в управляемые С++ или С++/CLI и ссылку в неуправляемых статических библиотеках. Мы обнаружили, что это было проще всего поддерживать, поскольку неуправляемые библиотеки меняются наименее.