Статическая ссылка на lib и все еще запрашивающая DLL
Используя Visual Studio 2008, у меня есть .H
и .LIB
файл библиотеки. Я написал программу и ссылался на LIB через свойства проекта. Он хорошо компилируется, но при запуске запрашивает установку DLL. Если DLL находится в том же каталоге, что и EXE
это работает, но если у меня есть LIB
разве это не означает, что функции статически связаны с моей программой?
2 ответа
Не все lib
файлы являются статическими библиотеками. Некоторые из них являются библиотеками импорта, и, скорее всего, это то, с чем вы связаны.
Если твой lib
файл намного меньше соответствующего dll
файл, это верный признак того, что это библиотека импорта.
Разрешение вашей программе использовать DLL требует наличия библиотеки импорта. Это файл с расширением.lib, такой же как статический.lib. Но он очень маленький, он содержит только список функций, которые экспортируются DLL. Это нужно компоновщику, чтобы он мог вставить имя DLL в таблицу импорта. Вы можете убедиться в этом сами, запустив Dumpbin.exe /import на вашем.exe