Visual C++ 应用程序无法在 Windows 7 上运行

Visual C++ application won't run on windows 7

本文关键字:Windows 运行 C++ 应用程序 Visual      更新时间:2023-10-16

我正在使用Visual Studio Community 2015,我编写了一些简单的Win32演示应用程序,该应用程序应该从互联网下载文件并执行两个HTTP GET请求。

我正在使用InternetOpenAInternetConnectAHttpOpenRequestAURLDownloadToFile等函数。

我在设置中唯一更改的是Visual Studio 2013(v120(的平台工具集,我的targetver.h文件如下所示:

#pragma once
// Including SDKDDKVer.h defines the highest available Windows platform.
// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and
// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.
#include <WinSDKVer.h>
#define WINVER 0x0600
#define _WIN32_WINNT 0x0600 
#include <SDKDDKVer.h>

但是,它在我的Windows 10计算机上运行,但不能在Windows 7上运行。它说:缺少MSVCR120.dll文件。我可以安装适当的C++可再发行组件,但这不是我需要的解决方案。

编译时是否需要包含任何其他选项以避免此错误?

若要避免应用程序需要单独的运行时 DLL,请在项目设置中查看:

C/C++> 代码生成>运行时库

并选择多线程,而不是多线程 DLL。

您无需更改平台工具集。

在我的项目中,我使用 VS 2017 编译并希望一直运行到 Vista,我和你做同样的事情,但没有第一个#include <WinSDKVer.h>。我只是将_WIN32_WINNT宏设置为 0x0600到目前为止它工作正常。

我的目标是Windows 8.1 SDK,如果有帮助的话,请使用MFC。

我过去曾使用依赖 walker 来诊断 dll 依赖关系。希望这是一些愚蠢的东西,比如缺少 32 位或 64 位运行时。

正如 Keith 在他的回答中建议的那样,您还可以尝试静态链接 vc 运行时(C++/Code Generation/Runtime Library 下的/MT[d](,这样它就不需要将运行时作为 dll 加载。请注意,这不是推荐的选项,因为如果 VC 运行时已刻录到可执行文件中,则 Windows 更新无法修补它。