Visual Studio 2012 Project 针对使用 MFC 的 Windows XP

Visual Studio 2012 Project targeting Windows XP using MFC

本文关键字:MFC Windows XP Studio 2012 Project Visual      更新时间:2023-10-16

我最近从一个使用 MFC 库的 VS2005 项目中获取了源代码。首先,我将项目升级到VS2012,现在可以在Windows 8上成功构建和运行该软件。接下来,我想在Windows XP机器上部署该软件。

我已经将平台工具集设置为构建到Windows XP(使用v110_xp选项),并且我已经在目标计算机上安装了"Visual C++ Redistributable for Visual Studio 2012 Update 1"。当我运行该软件时,似乎没有任何反应。通过一些日志记录函数,我可以确定对 LoadFrame(IDR_MAINFRAME) 的调用会导致 kernel32.dll 中的异常。我无法进一步调试LoadFrame,因为在VS2012中无法在Windows XP上进行远程调试。

知道可能出了什么问题吗?Visual C++ 可再发行组件包是否是要在目标计算机上安装的正确版本?接下来我应该尝试什么?

更新

我的项目已设置为使用 7.1 SDK,并且在链接器选项中将所需的最低版本设置为 5.01。

如果我使用 InstallShield 生成安装程序并包含 MFC、CRT 和 ATL 可再发行组件,安装程序就可以工作,我的程序现在可以在 Windows XP 上运行。我对可再发行组件的理解是,它们只是将相关的dll复制到system32文件夹(或等效文件夹)中?这是对的吗?

但是,如果我只是简单地复制文件,运行vsredist_x86.exe或使用Inno Setup安装软件和dll,我的程序将不再工作。

我相信你已经读过这个博客。总之,需要使用 7.1 SDK,并且需要在链接器选项中将所需的最低版本设置为 5.01。

使用正在运行的InstallShield项目和不工作的Inno项目,我能够确定真正的罪魁祸首是未注册的msxml4.dll。我收到的错误没有为这个结果提供真正的线索,但我最终到达了那里......

regsvr32 msxml4.dll