Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我需要提供导入库吗?_C++_Dll_Package_Portable Executable_Import Libraries - Fatal编程技术网

C++ 我需要提供导入库吗?

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

我有一个应用程序,它使用windows dbghelp.dll(主要用于读取dll的PE文件头)。为了使用dll,我必须在链接器选项中包含dbghelp.lib(导入库)

我确实了解导入库的功能。我的问题是,当我将应用程序分发给用户时,.lib文件是否也打包在一起?由于.lib文件是VS sdk的一部分,我不希望我的用户拥有这个文件

由于dbghelp.dll默认在windows中提供,因此我希望我的应用程序在任何windows计算机上都能正常工作。我的假设正确吗

注意:我确实知道dbghelp.dll的不同版本在不同的版本上,以及在不同的机器上运行时,这有时会导致问题

我的问题是,当我将应用程序分发给用户时 .lib文件是否也与之打包

不需要,您不需要将
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的重新分发策略是专门针对 旨在使人们尽可能容易地包含这些 文件在其自己的包和版本中

请注意,您必须从分发文件(而不是系统中的文件)