首页 > 解决方案 > 我可以完全静态链接 MFC 应用程序吗?

问题描述

我有一个在 Visual Studio 中构建的简单 MFC 应用程序。我希望能够链接它,以便任何 Windows PC 都可以运行它而无需安装任何其他东西。只需双击 .exe 即可!

查看调试版本,这是我的依赖项:

VERSION.dll
MSVCP140D.dll
Mfc140d.dll
KERNEL32.dll
USER32.dll
GDI32.dll
SHELL32.dll
OLEAUT32.dll
VCRUNTIME140D.dll
Ucrtgbased.dll
WS2_32.dll

我知道其中两个 .dll 来自 Windows Visual C++ 库。

我的问题是,我可以配置我的版本以便内置这个 .exe 需要的任何东西吗?或者我是否总是需要在想要运行它的机器上安装 Visual C++。我猜是后者,但不确定库的静态与动态链接能力。

标签: c++windowsvisual-studiolinkermfc

解决方案


我的问题是,我可以配置我的版本以便内置这个 .exe 需要的任何东西吗?还是我总是需要在想要运行它的机器上安装 Visual C++?

是的,您可以使用静态链接构建应用程序,它不需要安装 C++ 和 MFC 运行时即可运行。

如果您使用 C++ 运行时和 MFC 的 dll 依赖项构建(因此不是静态链接),您将需要在您分发到的所有机器上安装 VC++ 运行时(不是完整的开发环境)(为了服务这可能是一个更好的选项)。

您需要阅读 options和/MT,特别是控制 C++ 运行时和 MFC 链接,尽管 IDE 使这更容易控制。另请注意,您已在C++ 运行时和 MFC 的调试版本(等)中链接,您通常不会像那样分发它。如果您需要在开发框中对其进行调试,您仍然可以通过使用符号构建并关闭优化来获得有关应用程序错误的更多详细信息。/MD/DLL/MDd


推荐阅读