Нужно ли отправлять импортные библиотеки?

У меня есть приложение, которое использует Windows dbghelp.dll (в основном для чтения заголовка файла PE библиотеки DLL). Чтобы работать с dll, мне пришлось включить dbghelp.lib (библиотека импорта) в параметры компоновщика.

Я понимаю функциональность библиотек импорта. Мой вопрос заключается в том, что, когда я распространяю свое приложение среди пользователей, файл .lib также поставляется вместе с ним? Поскольку файл .lib является частью SDK от VS, я не ожидаю, что мои пользователи будут иметь этот файл.

Так как dbghelp.dll предоставляется по умолчанию в Windows, я ожидаю, что мое приложение будет работать правильно на любом компьютере с Windows. Я прав, предполагая это?

Примечание: я знаю о том, что различные версии dbghelp.dll находятся в разных версиях, и как это может иногда вызывать проблемы во время выполнения на разных машинах.

0

Решение

Мой вопрос заключается в том, что когда я
.lib файл тоже в комплекте с ним?

Нет, вам не нужно распространять dbghelp.lib файл для конечных пользователей, поскольку он требуется только для создания приложения (на этапе соединения).

Обратите внимание, что то же самое относится и к разработчикам, если ваше приложение с открытым исходным кодом. Ожидается, что они будут иметь SDK для создания вашего приложения, таким образом, уже dbghelp.lib файл в распоряжении.

OTOH, если ваш конечный продукт является DLL, вы можете предоставить *.lib файл вашего продукта, чтобы разработчики могли ссылаться на вашу DLL.

так как dbghelp.dll предоставляется по умолчанию в Windows, я ожидаю, что мой
приложение для корректной работы на любой машине Windows. Я прав в
предполагая это?

Это хороший вопрос, и ответ да и нет. dbghelp.dll немного особенным, так как он часто обновляется, но никогда в составе системных обновлений (кроме ошибок). Таким образом, ваше приложение будет работать нормально в большинстве случаев, но если вы используете последнюю версию, вы не можете ожидать, что конечный пользователь установит ее в своей системе. Таким образом, ваше приложение может работать неправильно.

Цитируя MSDN:

Хотя эта DLL включена во все поддерживаемые версии Windows, она
редко является самой последней доступной версией DbgHelp

Таким образом, вы можете (в отличие от большинства системных DLL) свободно распространять dbghelp.dll файл (вдоль файлов сервера символов, а именно SymSrv.dll, а также SrcSrv.dll которые не включены в системы.):

Политики перераспределения для этих включенных DLL были специально
разработан так, чтобы люди могли легко
файлы в собственных пакетах и ​​выпусках.

Обратите внимание, что вы должны распространять файлы из Инструменты отладки для Windows (не тот из вашей системы).

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]