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