我的问题是,当我将我的应用程序分发给用户时,.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 调试工具的文件(而不是来自您系统的那个)。