理解 Visual C++ 应用程序的依赖项
确定您的应用程序依赖哪些 Visual C++ 库的一种方法是:查看您项目的**“属性页”对话框中的“常规”选项卡。 例如,您可能看到项目使用的是 MFC 和 ATL 库。 如果选择了“在动态库中使用 MFC”,则您的应用程序在运行时依赖于 MFC DLL(如 mfc100.dll)。 如果您的应用程序不使用 MFC 或 ATL,它可能仍依赖 CRT 库(如果已在“配置属性”的 C/C++ 分支中的“代码生成”选项卡上为“运行库”选择了“多线程调试 DLL (/MDd)”**)。
确定您的应用程序依赖哪些 DLL 的最全面的方式是:使用依赖项查看器 (depends.exe) 打开该应用程序。 可以从 http://www.dependencywalker.com 下载依赖项查看器。
通过使用 depends.exe 或具有 /DEPENDENTS 选项的 DUMPBIN 实用工具,可以查看静态链接到您的应用程序的 DLL 的列表,以及应用程序的延迟加载的 DLL 的列表。
若要查看哪些 DLL(如 ActiveX 控件)是动态加载的,请使用 depends.exe 的分析功能。 然后,测试您的应用程序,直到您确信所有代码路径都已执行。 在结束分析会话时,Depends.exe 将显示哪些 DLL 是动态加载的。
在使用 Depends.exe 时,要注意,DLL 可能有关于另一个 DLL 或特定 DLL 版本的依赖项。 可以在开发计算机上或目标计算机上使用 Depends.exe。 在开发计算机上,Depends.exe 将报告支持应用程序所需要的 DLL。 如果在让应用程序在目标计算机上运行时遇到问题,可以将 depends.exe 复制到目标计算机上,然后在 depends.exe 中打开该应用程序。 depends.exe 将报告应用程序的哪些 DLL 不存在,或者虽然存在,但版本不正确。
在您有了应用程序所依赖的 DLL 的完整列表后,就可以决定其中哪些 DLL 在部署到其他计算机时必须与您的应用程序一起重新发布。 在多数情况下,没必要重新发布系统 DLL,但是可能必须重新发布 Visual C++ 库的 DLL。 有关更多信息,请参见确定要重新分发的 DLL。