Ссылки на DLL в Visual C ++ - PullRequest
43 голосов
/ 01 мая 2009

У меня был опыт работы с C ++, но не MSVC.

То, что я пытаюсь сделать, - это включить .dll из проекта с открытым исходным кодом в мой проект. Код доступен, и я его построил. У меня есть .dll, а также .lib, который, как я понимаю, требуется для проектов C ++.

К сожалению, сейчас нет простого «Добавить ссылку», поместите мой .dll в каталог include и добавьте его в мое решение. Я отредактировал страницы свойств проекта, опцию «Дополнительные каталоги включения C / C ++», а также добавил .lib в качестве дополнительной зависимости компоновщика. Я создал каталог включения для dll и lib внутри моего дерева решений.

Моя проблема в том, что когда я пытаюсь включить заголовочные файлы из документации, вывод VS выдает сообщения об ошибках. Теперь я понимаю, что я использую комбо dll / lib и что файлы .h отсутствуют в моем решении, так как мне добавить правильные включения? Я также использую набор инструментов QT, который работает, но то, как я добавляю другой заголовок / dll из библиотеки с открытым исходным кодом, ускользает от меня.

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

Ответы [ 3 ]

77 голосов
/ 01 мая 2009

Вам нужно сделать пару вещей, чтобы использовать библиотеку:

  1. Убедитесь, что у вас есть и * .lib, и * .dll из библиотеки, которую вы хотите использовать. Если у вас нет * .lib, пропустите # 2

  2. Поместите ссылку на * .lib в проекте. Щелкните правой кнопкой мыши имя проекта в обозревателе решений, а затем выберите «Свойства конфигурации» -> «Линкер» -> «Ввод» и введите имя библиотеки в свойстве «Дополнительные зависимости».

  3. Вы должны убедиться, что VS может найти только что добавленную библиотеку, поэтому вам нужно перейти в меню «Инструменты» и выбрать «Параметры» ... Затем в разделе «Проекты и решения» выберите «Каталоги VC ++», отредактируйте параметр «Каталог библиотеки». Здесь вы можете установить каталог, содержащий вашу новую библиотеку, выбрав «Библиотечные файлы» в раскрывающемся списке «Показать каталоги для:». Просто добавьте путь к вашему файлу lib в списке каталогов. Если у вас нет библиотеки lib, вы можете пропустить это, но пока вы здесь, вам также нужно будет установить каталог, содержащий ваши заголовочные файлы, а также в «Include Files». Сделайте так же, как вы добавили библиотеку.

После этого вы должны быть готовы и можете использовать свою библиотеку. Если у вас нет файла lib, вы все равно можете использовать dll, импортировав его самостоятельно. Во время запуска ваших приложений вы можете явно загрузить dll, вызвав LoadLibrary (подробнее см. http://msdn.microsoft.com/en-us/library/ms684175(VS.85).aspx)

Ура!

EDIT

Не забудьте использовать #include вместо #include "foo.h". Первый ищет путь включения. Последний использует локальные файлы проекта.

2 голосов
/ 01 мая 2009

Дополнительные каталоги относятся к директории проекта. Обычно это каталог, в котором находится файл вашего проекта * .vcproj. Я полагаю, что в вашем случае вы должны просто добавить "include" в каталоги include и библиотеки.

Если вы хотите быть уверенными в том, что каталог вашего проекта, вы можете проверить значение макроса $ (ProjectDir). Для этого перейдите в «C / C ++ -> Дополнительные каталоги включения», нажмите кнопку «...» и во всплывающем диалоговом окне нажмите «Макросы >>».

1 голос
/ 01 мая 2009

Вы упоминаете о добавлении дополнительного каталога include (C / C ++ | General) и дополнительной зависимости lib (Linker | Input), но вы также добавили каталог дополнительных библиотек (Linker | General)?

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...