2016-12-06 2 views
1

Я пытаюсь связать мой проект (C++ консольное приложение) к внешней статической библиотеки (в основном .lib файл и файл в .h заголовка), в Visual Studio 2015C++ - не может ссылаться на статическую библиотеку в VS2015

Я добавил путь к папке, которая содержит .lib (определенную папку я создал, в корневой папке проекта, которая содержит только .lib-файл), в свойствах проекта, в

  1. "C/C++ - Общие сведения - Дополнительные каталоги"
  2. "Linker - Общий - Дополнительные каталоги библиотек»

И я также добавил имя файла к„Linker - Input - Дополнительные зависимости“. В качестве теста я попытался указать неправильное имя файла - это вызвало ошибку LNK1104 (которая не возникает при указании правильного имени).

По какой-то причине, когда я #include библиотеку заголовка (.h файла) в мой main.cpp файл, то «системная ошибка» accures -

Программа не может начаться, потому что external_dll.dll отсутствует с вашего компьютера [..]

по какой-то причине, компоновщик ищет .dll файла, основываясь на имени заголовка #include г - несмотря на то, что я связал проект с стат ic library (.lib файл).

Этот файл .dll, конечно, не существует.

Я что-то упустил?

+0

Можете ли вы написать имя библиотеки? –

ответ

0

Ваше приложение просто не может найти DLL-файл. Самое простое решение - поместить эту DLL в папку с вашим exe-файлом.

+0

Нет DLL - вот и все. Прочтите вопрос. – golosovsky

+0

Очевидно, что статическая библиотека просто статически связывает ваше приложение с некоторой DLL в вашем случае. http://stackoverflow.com/questions/424032/how-to-link-a-dll-static –

+1

@golosovsky - Вы не совсем уверены, что не должна быть DLL? ** Многие ** библиотеки на основе DLL поставляются с .h (для времени компиляции), .lib (для времени ссылки) и .dll (для времени выполнения).В этих случаях H и LIB часто представляют собой простую оболочку, которая загружает DLL и делает необходимые данные для получения прокси-адреса, а также обрабатывает любые проблемы ABI, но DLL по-прежнему требуется во время выполнения. –

1

Если folllowing случай: -

«По какой-то причине, компоновщик ищет DLL-файл, на основе имени #included заголовка - несмотря на то, что я связал проект с статическая библиотека (файл .lib). "

тогда должен быть какой-то способ отключить эту функцию, я имею в виду в настройке проекта VS2015, нужно иметь возможность сделать компоновщик, чтобы перестать искать DLL-файл соответствующего DLL-файла заголовка #include.

Также есть поле exclude, если вы не могли сделать выше, вы можете попробовать исключить DLL-файл, с которым вы сталкиваетесь, а затем взять его оттуда.