【发布时间】:2020-06-24 10:04:35
【问题描述】:
我使用标准头文件和 DirectX(见下文)创建了一个 Windows x64 程序。我有点期待用户不需要额外的运行时库。但我从一些人那里得到了vcruntime140_1.dll 丢失的反馈。这很容易解决,但我如何确保用户不需要下载除 DirectX 之外的其他运行时库?
#include#include #include #include #include #include #include #include #include #include #include
【问题讨论】:
-
看起来很简单。在 VM 上加载全新安装的 Windows。复制你的exe。运行它,满足依赖关系,重新运行直到它按预期工作。记下您添加的依赖项并将它们与您的 exe 一起发布。
-
另外我希望你使用微软的安装程序来实现msvcp依赖;而不是从您的 System32 或其他东西复制。 :)
-
“我如何确保用户不需要下载额外的运行时库” - 简单,不依赖它们。如果您正在编写 C++ 代码,则依赖于 C++ 实现的支持库。 C 语言也是如此。编写不依赖于任何运行时库的代码是可能的,但非常重要。
-
如果你的开发平台是visual studio,那么对应的vcredist安装程序的存在是有原因的;这将是一个大问题。如果您的程序是使用 VS2015u3 构建的,则相应的 vsredist 安装程序模块应该包含在您的安装程序中,并按保证运行。此外,它们可以从 MS 下载,供开发人员作为其交付程序的一部分包含在内。
-
考虑静态链接runtime,而不是(
/MT,/MTd)。