MSVC17 将应用程序与运行时静态链接,仍然出现缺少 dll 错误

MSVC17 Linking application with runtime statically, still getting missing dll error

我设置了 /MT 标志,让我的 C++ 应用程序与 C 运行时静态链接,因此我不必担心重新分发运行时,但是,在启动时我收到一条错误消息,提示缺少 "Api-ms-win-core-version-l1-1-0.dll" .如何编译我的应用程序,使其完全独立于任何运行时等?

构建环境:MSVC 2017,windows10 SDK 编译测试机:64-Bit Windows 7

选择的答案here帮助我解决了我的问题。简而言之,您不能 link 使用任何 api-ms-win-core* 库,您应该 link 使用适当的库在 msdn 中列出了 APIs。 api-ms-win-core* 库被 OS 间接使用,这就是它们显示为缺失的原因 - 实际上适当的 windows .lib 需要 linked.

在我的例子中,我使用 depends 来找出缺少哪些 API 库,然后在 msdn 中查找适当的 .lib 文件并将它们添加到 "additional dependencies" 中。问题已解决。

仅供参考,/MT 标志按预期工作,我不必重新分发 c-runtime 等。