#cpp #qt #dll #lib
В проекте С++ (который компилируется в динамическую библиотеку) используется библиотека Qt, поэтому в Linker->Input добавлена статическая библиотека QtCore4.lib; почему во время использования проектной dll требуется также QtCore4.dll?
Ответы
Ответ 1
Проблема состоит в том, что файл с расширением lib совершенно не обязан содержать статическую библиотеку. Если кратко, то этот файл содержит внешние по отношению к программе символы и инструкции как с этими символами поступать. Это может быть инструкция о связи с динамически компонуемой библиотекой (DLL) или же инструкция вставки готового откомпилированного кода, содержащегося в lib-файле. Qt стандартно распространяется в shared-версии, т.е. откомпилированные программы требуют её DLL, поэтому почти все её lib-файлы - это просто инструкции связи с DLL. Тем самым QtCore4.lib просто даёт компоновщику информацию о том, что все перечисленные в ней символы нужно брать из QtCore4.dll. Чтобы избавиться от зависимостей, Qt нужно пересобирать статически.Ответ 2
Потому что эта lib не содержит нужного кода, а является прокладкой между вашим кодом и dll. Ровно та же ситуация с lib для WinAPI.
Комментариев нет:
Отправить комментарий