Ссылки DLL в Visual C ++

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

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

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

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

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

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

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

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

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

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

Ура!

РЕДАКТИРОВАТЬ

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

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

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

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

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

  • memset () или инициализацию значения, чтобы обнулить структуру?
  • Ошибки при подключении к protobuf 3 на MSVC 2013
  • getline работает неправильно? Каковы могут быть причины?
  • MSVCR100.dll отсутствует ошибка даже там
  • Утверждение не выполнено (size.width> 0 && size.height> 0)
  • Почему эта программа ошибочно отвергается тремя компиляторами C ++?
  • Ошибка распространения VC ++ 2008: доступ запрещен
  • Как установить OpenCV 2.0 на win32
  • Vc_redist.x86.exe Ошибка установки: 0x80240017 Неопределенная ошибка
  • Почему std :: vector :: operator от 5 до 10 раз быстрее, чем std :: vector :: at ()?
  • Ошибка связи LNK2019 в MSVC, неразрешенные символы с префиксом __imp__, но должны быть из статического lib
  • Давайте будем гением компьютера.