Как добавить внешние библиотеки для компиляции в 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 и ссылку в неуправляемых статических библиотеках. Мы обнаружили, что это было проще всего поддерживать, поскольку неуправляемые библиотеки меняются наименее.