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