C++ 我需要提供导入库吗?
我有一个应用程序,它使用windows dbghelp.dll(主要用于读取dll的PE文件头)。为了使用dll,我必须在链接器选项中包含dbghelp.lib(导入库) 我确实了解导入库的功能。我的问题是,当我将应用程序分发给用户时,.lib文件是否也打包在一起?由于.lib文件是VS sdk的一部分,我不希望我的用户拥有这个文件 由于dbghelp.dll默认在windows中提供,因此我希望我的应用程序在任何windows计算机上都能正常工作。我的假设正确吗 注意:我确实知道dbghelp.dll的不同版本在不同的版本上,以及在不同的机器上运行时,这有时会导致问题 我的问题是,当我将应用程序分发给用户时 .lib文件是否也与之打包 不需要,您不需要将C++ 我需要提供导入库吗?,c++,dll,package,portable-executable,import-libraries,C++,Dll,Package,Portable Executable,Import Libraries,我有一个应用程序,它使用windows dbghelp.dll(主要用于读取dll的PE文件头)。为了使用dll,我必须在链接器选项中包含dbghelp.lib(导入库) 我确实了解导入库的功能。我的问题是,当我将应用程序分发给用户时,.lib文件是否也打包在一起?由于.lib文件是VS sdk的一部分,我不希望我的用户拥有这个文件 由于dbghelp.dll默认在windows中提供,因此我希望我的应用程序在任何windows计算机上都能正常工作。我的假设正确吗 注意:我确实知道dbghelp
dbghelp.lib
文件分发给最终用户,因为它只需要构建应用程序(在链接阶段)
请注意,如果您的应用程序是开源的,那么这同样适用于开发人员。他们需要SDK来构建您的应用程序,因此已经有了dbghelp.lib
文件
OTOH,如果您的最终产品是一个DLL,那么您可以提供产品的*.lib
文件,以便开发人员可以链接到您的DLL
由于默认情况下在windows中提供dbghelp.dll,因此我希望
应用程序在任何windows计算机上正常工作。我说的对吗
假设是这样
这是一个很好的问题,答案是肯定和否定。dbghelp.dll
有点特殊,因为它经常升级,但作为系统更新的一部分,从不(bug除外)。因此,您的应用程序在大多数情况下都可以正常工作,但如果您使用的是最新版本,则无法期望最终用户将其安装在其系统上。因此,您的应用程序可能无法正常工作
引述:
尽管此DLL包含在所有受支持的Windows版本中,但它
很少有最新版本的DbgHelp可用
因此,您可以自由(与大多数系统dll不同)重新分发dbghelp.dll
文件(以及系统中未包含的符号服务器文件,即SymSrv.dll
和SrcSrv.dll
):
这些包括DLL的重新分发策略是专门针对
旨在使人们尽可能容易地包含这些
文件在其自己的包和版本中
请注意,您必须从分发文件(而不是系统中的文件)