理解 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。