Ссылки DLL в Visual C ++
У меня был опыт C ++, но не MSVC.
То, что я пытаюсь сделать, это включить .dll из проекта с открытым исходным кодом в мой проект. Код доступен, и я его создал. У меня есть .dll, а также .lib, который, как я понимаю, требуется для проектов на C ++.
Теперь, к сожалению, нет простого «Добавить ссылку», поместите мою .dll в каталог include и добавьте это в мое решение. Я редактировал страницы свойств проекта, дополнительные каталоги C / C ++ Дополнительные каталоги, а также добавлял .lib в качестве дополнительной зависимости компоновщика. Я создал каталог include для dll и lib внутри моего дерева решений.
- Почему Visual Studio 2010 не может найти / открыть файлы PDB?
- Что происходит с тем, что происходит с памятью с памятью std :: deque?
- Visual Studio 2012 __cplusplus и C ++ 11
- Разница в производительности между MSVC и GCC для высоко оптимизированного матричного кода
- Ошибка Weird MSC 8.0: «Значение ESP не было должным образом сохранено в вызове функции ...»
Моя проблема в том, что когда я пытаюсь включить файлы заголовков из документации, вывод VS выдает сообщения об ошибках. Теперь я понимаю, что я использую компиляцию dll / lib и что файлы .h не присутствуют в моем решении, так как я могу добавить соответствующие варианты? Я также использую инструментарий QT, который работает, но как я добавляю другой заголовок / dll из библиотеки с открытым исходным кодом, ускользает от меня.
Может кто-то, пожалуйста, назовите меня в правильном направлении.
- Ошибка LNK2005 в CLR Windows Form
- Почему пустая оптимизация базового classа не работает?
- Почему именно мне нужен явный upcast при реализации QueryInterface () в объекте с несколькими интерфейсами ()
- Что именно «нарушено» с помощью двухфазного экземпляра шаблона Microsoft Visual C ++?
- Совместное использование предварительно скомпилированных заголовков между проектами в Visual Studio
- Как скомпилировать коммутатор в Visual C ++ и насколько он оптимизирован и быстро?
- Почему сравнение double и float приводит к неожиданному результату?
- Как преобразовать char * в LPCWSTR?
Вам нужно сделать несколько вещей, чтобы использовать библиотеку:
-
Убедитесь, что у вас есть * .lib и * .dll из библиотеки, которую вы хотите использовать. Если у вас нет * .lib, пропустите # 2
-
Поместите ссылку на * .lib в проекте. Щелкните правой кнопкой мыши имя проекта в обозревателе решений и выберите «Свойства конфигурации» -> «Линейщик-> Ввод» и поместите имя библиотеки в свойство «Дополнительные зависимости».
-
Вы должны убедиться, что VS может найти только что добавленный вами lib, поэтому вам нужно перейти в меню «Инструменты» и выбрать «Параметры» … Затем в разделе «Проекты и решения» выберите «Каталоги VC ++», отредактируйте пункт «Каталог библиотек». Здесь вы можете установить каталог, содержащий новый lib, выбрав «Библиотечные файлы» в раскрывающемся списке «Показать каталоги для:». Просто добавьте путь к вашему файлу lib в списке каталогов. Если у вас нет lib, вы можете опустить это, но в то время как здесь вы также должны установить каталог, который содержит ваши файлы заголовков, а также в разделе «Включить файлы». Сделайте это так же, как вы добавили lib.
После этого вы должны быть добры, чтобы пойти и можете использовать свою библиотеку. Если у вас нет файла lib, вы все равно можете использовать dll, импортировав его самостоятельно. Во время запуска приложений вы можете явно загрузить DLL, вызвав LoadLibrary (см. http://msdn.microsoft.com/en-us/library/ms684175(VS.85).aspx для получения дополнительной информации)
Ура!
РЕДАКТИРОВАТЬ
Не забудьте использовать #include
Дополнительные каталоги относятся к описанию проекта. Обычно это каталог, в котором находится файл проекта, * .vcproj. Я предполагаю, что в вашем случае вам нужно добавить только «include» в ваши каталоги include и library.
Если вы хотите быть уверенным, что такое ваш проект, вы можете проверить значение макроса $ (ProjectDir). Для этого перейдите в «C / C ++ -> Дополнительные каталоги включения», нажмите кнопку «…», а во всплывающем диалоговом окне нажмите «Макросы >>».
Вы упомянули добавление дополнительного каталога include (C / C ++ | General) и дополнительной зависимости от lib (Linker | Input), но вы также добавили дополнительную библиотечную директорию (Linker | General)?
Включение примерного сообщения об ошибке также может помочь людям ответить на вопрос, так как даже не ясно, является ли ошибка во время компиляции или связывания.