使用MFC针对Windows XP定位的Visual Studio 2012项目

3
我最近获得了一个使用MFC库的VS2005项目的源代码。首先,我将该项目升级到VS2012,并且现在可以在Windows 8上成功构建和运行软件。接下来,我想在Windows XP机器上部署该软件。
我已经将平台工具集设置为构建到Windows XP(使用v110_xp选项),并在目标机器上安装了“Visual Studio 2012 Update 1的Visual C++ Redistributable”。当我运行该软件时,似乎什么也没有发生。通过一些日志记录函数,我可以确定调用LoadFrame(IDR_MAINFRAME)会导致kernel32.dll中的异常。由于在VS2012中无法进行远程调试Windows XP,因此我无法进一步调试LoadFrame。
有什么想法可能出了什么问题?Visual C++ Redistributable包是要安装在目标机器上的正确版本吗?我应该尝试什么?
更新:
我的项目已经设置为使用7.1 SDK,并且在链接器选项中将最低要求版本设置为5.01。
如果我使用InstallShield生成安装程序并包含MFC、CRT和ATL可重定向文件,则安装程序可以正常工作,我的程序现在可以在Windows XP上运行。我对可重定向文件的理解是它们只是将相关dll复制到system32文件夹(或等效位置)中。这是正确的吗?
然而,如果我仅复制文件,运行vsredist_x86.exe或使用Inno Setup安装软件和dll,则我的程序将无法正常工作。
2个回答

2

我相信你已经阅读了这篇博客。简述如下,您需要使用7.1 SDK,并在链接器选项中将最低所需版本设置为5.01。


2

通过使用可用的安装程序 InstallShield 项目和无法正常工作的 Inno 项目,我确定真正的罪魁祸首是未注册的 msxml4.dll。尽管我最初收到的错误信息并没有给出这个结果的真正线索,但最终我还是找到了...

regsvr32 msxml4.dll

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接