我需要运送导入库吗
Do I need to ship import libraries?
我有一个使用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。
由于dbghelp.dll是在windows中默认提供的,我希望应用程序在任何windows机器上都能正常工作。我说得对吗假设这样?
这是一个很好的问题,答案是肯定的和否定的。dbghelp.dll
有点特别,因为它经常升级,但作为系统更新的一部分,从未(除了bug)。因此,您的应用程序在大多数情况下都可以正常工作,但如果您使用最新版本,则不能指望最终用户在其系统上使用它。因此,您的应用程序可能无法正常工作。
引用MSDN:
尽管此DLL包含在所有支持的Windows版本中很少是可用的DbgHelp 的最新版本
因此,您可以自由地(与大多数系统DLL不同)重新分发dbghelp.dll
文件(以及系统中不包括的符号服务器文件,即SymSrv.dll
和SrcSrv.dll
):
这些包含DLL的重新分发策略旨在让人们尽可能容易地将这些文件在其自己的包和版本中。
请注意,必须从Windows调试工具(而不是系统中的调试工具)分发文件。
- 尝试导入pybind-opencv模块时出现libgtk错误
- 导入库可以跨dll版本工作吗
- 建议在运行时将带有类实例的列表从c++导入qml
- 导入/导出变量时出错
- 为什么导入Mixed native/CLR lib.dll的本机C++应用程序没有在Mixed lib.dll中的外部变
- 将QT项目导入Visual Studio 2019会给我带来很多LNK2001错误
- 是否可以将函数导入命名空间,但不能导出它?
- 如何将 CLion C++ 项目导入 Visual Studio?
- Python 3.8 不能与 Pybind11 一起导入 [Windows]
- 无法将标准库导入本机 android 项目中的头文件
- 尝试了解在导入的静态方法上使用删除方法时的错误
- 在 python 模块中导入子模块时PyImport_Import失败
- 将 C# DLL 导入 C++ 以用于 JNI
- 使用 QSslCertificate 在 Qt 中正确导入 pkcs12
- 在从Qt调用的Python脚本中导入OpenCV崩溃
- 编译boost_python扩展无法在 python 2.7 中导入
- 如何在安卓工作室中将c ++头文件从一个文件夹导入到另一个文件夹?
- Dll在同一解决方案中从 c# 项目导入到 c++ 项目
- C++20 使用 Visual Studio 编译模块:不编译或导入 ixx 文件
- 我可以将cocos项目导入虚幻4吗?