首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Visual Studio 2010 Win32应用程序无法在Windows XP上启动

Visual Studio 2010 Win32应用程序无法在Windows XP上启动
EN

Stack Overflow用户
提问于 2012-02-03 15:03:55
回答 3查看 7.3K关注 0票数 1

我必须编写一个具有一些特定需求的简单应用程序:

  1. 它应该只由一个exe文件组成,没有安装程序或外部DLL的
  2. 它应该是小的
  3. 它应该运行在任何视窗(Win32)平台上(至少在视窗XP上),而不需要对视窗安装做任何修改(不依赖于.NET,JVM,MFC或者Visual Studio应该有一个简单的(基于对话框的) UI

我决定用C (C++)编写一个简单的Win32应用程序,并且只使用标准的win32应用程序接口,没有花哨的东西。我在64位Windows 7上用Visual Studio2010创建了这个项目,并将运行时库从多线程DLL更改为多线程。我认为这将产生最兼容Windows的应用程序。

编译后的应用程序在我的Windows7上运行良好,但我无法在任何Windows XP PC上启动它。我在Windows XP SP2和SP3上都试过。奇怪的是,我在活动管理器中没有收到任何错误消息,也没有恶意进程,当我双击exe文件时没有任何反应。并且没有生成DrWatson日志。

我已经在项目设置中检查了目标计算机,它是MachineX86。

我已经在谷歌上搜索了很多关于这个问题的信息,其中一个技巧是修改targetver.h,我这样做了,但没有得到结果。这是我的targetver.h现在的样子:

代码语言:javascript
复制
#include <WinSDKVer.h>
#define _WIN32_WINNT      _WIN32_WINNT_WINXP
#include <SDKDDKVer.h>

我也尝试过依赖遍历,但它只显示一个延迟加载的动态链接库DWMAPI.DLL,它看起来像是一个Vista动态链接库。还有另外两个延迟加载的动态链接库MPR.DLL和SHLWAPI.DLL的警告。但由于它们是延迟加载的,而且我不认为我在其中使用了任何东西,所以这无关紧要(谷歌一下就会发现这些警告应该被忽略)。

我的目标是能够编译一个可以在XP机器上工作的可执行文件,而不需要对它们进行任何修改。

EN

回答 3

Stack Overflow用户

发布于 2012-02-07 15:21:45

我解决了这个问题。当我说我做的是普通的Win32,没有花哨的东西时,它不是完全正确的。我不想要在现代操作系统上运行前XP的外观和感觉,所以我在stdafx.h中添加了以下几行代码(遵循我在网上找到的提示):

代码语言:javascript
复制
#define ISOLATION_AWARE_ENABLED 1
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")

我没有提到这一点的原因是,我已经尝试删除这些行,但它仍然不起作用(我仍然不能理解为什么当我删除这些行时它不起作用,我尝试了不止一次)。

但在阅读了更多关于MSDN的文章后,我发现这些行需要放在windows.h的include之前,所以我移动了它,现在它可以工作了(经典和xp风格)

所以问题似乎是我在windows.h的include的错误一侧更改到了ComCtl32的版本6,但我仍然不知道为什么当我删除这些行时它不起作用。Windows会以某种方式缓存清单吗?

票数 1
EN

Stack Overflow用户

发布于 2012-02-03 15:14:24

也许你在XP机器上需要这个:MSVC 2010 runtime

票数 0
EN

Stack Overflow用户

发布于 2012-02-03 15:15:29

尝试创建静态链接到C运行时库的程序。

在解决方案中的项目中执行以下操作:转到属性|配置| C/C++ |代码生成|运行时库。

发布:将/MD更改为/MT,多线程。调试:将/MDd更改为/MTd,调试多线程。

如果您想继续使用动态链接,请按照@dbrank()的建议将MSVC++运行时文件复制到您的XP计算机中。然而,你在最初的帖子中表示,你想要一个独立的.exe,而不需要复制额外的文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9124902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档