Статическая ссылка на 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

Другие вопросы по тегам