У меня есть приложение, которое использует Windows dbghelp.dll (в основном для чтения заголовка файла PE библиотеки DLL). Чтобы работать с dll, мне пришлось включить dbghelp.lib (библиотека импорта) в параметры компоновщика.
Я понимаю функциональность библиотек импорта. Мой вопрос заключается в том, что, когда я распространяю свое приложение среди пользователей, файл .lib также поставляется вместе с ним? Поскольку файл .lib является частью SDK от VS, я не ожидаю, что мои пользователи будут иметь этот файл.
Так как dbghelp.dll предоставляется по умолчанию в Windows, я ожидаю, что мое приложение будет работать правильно на любом компьютере с Windows. Я прав, предполагая это?
Примечание: я знаю о том, что различные версии dbghelp.dll находятся в разных версиях, и как это может иногда вызывать проблемы во время выполнения на разных машинах.
Мой вопрос заключается в том, что когда я
.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 (не тот из вашей системы).
Других решений пока нет …