[英]Visual C++ application won't run on windows 7
我正在使用Visual Studio Community 2015,并且编写了一些简单的Win32演示应用程序,该应用程序应从Internet下载文件并执行两个HTTP GET请求。
我正在使用InternetOpenA
, InternetConnectA
, HttpOpenRequestA
, URLDownloadToFile
等功能。
我在设置中所做的唯一更改是将平台工具集更改为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。
我过去曾使用过依赖行者来诊断dll依赖项。 希望它像32位或64位运行时丢失一样愚蠢。
正如keith在他的回答中所建议的那样,您还可以尝试静态链接vc运行时(C ++ /代码生成/运行时库下的/ MT [d] ),以便它不需要将运行时作为dll加载。 请注意,这不是推荐的选项,因为如果Windows Update被刻录到可执行文件中,则VC运行时将无法通过Windows Update进行修补。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.