C статическая ссылка на lib и по-прежнему запрашивающая DLL

Используя visual studio 2008, у меня есть .H и .LIB файл библиотеки. Я написал программу и переопределил LIB через свойства проекта. Он компилируется отлично, но когда он запускается, он запрашивает установку DLL. Если DLL находится в том же каталоге, что и EXE, он работает... но если у меня есть LIB, разве это уже означает, что функции статически связаны с моей программой?

Спасибо

Ответ 1

Не все lib файлы являются статическими библиотеками. Некоторые из них являются библиотеками импорта, и есть вероятность, что вы связались с ними.

Если ваш файл lib намного меньше соответствующего файла dll, это верный признак того, что это библиотека импорта.

Ответ 2

Для использования вашей библиотеки DLL требуется библиотека импорта. Это файл с расширением .lib, как статический .lib. Но он очень мал, он содержит только список функций, экспортируемых DLL. Компилятор нуждается в этом, поэтому он может встраивать имя DLL в таблицу импорта. Вы можете убедиться в этом сами, запустив Dumpbin.exe/import на вашем .exe