Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用MFC以Windows XP为目标的Visual Studio 2012项目_C++_Mfc_Visual Studio 2012_Inno Setup_Installshield - Fatal编程技术网

C++ 使用MFC以Windows XP为目标的Visual Studio 2012项目

C++ 使用MFC以Windows XP为目标的Visual Studio 2012项目,c++,mfc,visual-studio-2012,inno-setup,installshield,C++,Mfc,Visual Studio 2012,Inno Setup,Installshield,我最近从使用MFC库的VS2005项目中获得了源代码。首先,我将项目升级到VS2012,现在我可以在Windows 8上成功构建和运行该软件。接下来,我想在WindowsXP机器上部署该软件 < >我已经设置平台工具集来构建到WindowsXP(使用V1xXP选项),并且我已经在目标机器上安装了VisualC++ 2012可更新的VisualStudio 1更新程序。当我运行软件时,似乎什么也没发生。通过一些日志函数,我可以确定对LoadFrame(IDR_MAINFRAME)的调用会导致ker

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

< >我已经设置平台工具集来构建到WindowsXP(使用V1xXP选项),并且我已经在目标机器上安装了VisualC++ 2012可更新的VisualStudio 1更新程序。当我运行软件时,似乎什么也没发生。通过一些日志函数,我可以确定对LoadFrame(IDR_MAINFRAME)的调用会导致kernel32.dll中出现异常。我无法在LoadFrame中进一步调试,因为VS2012中不提供Windows XP上的远程调试

你知道哪里出了问题吗?VisualC++可重分配软件包是否是目标机器上安装的正确版本?下一步我应该尝试什么

更新

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

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


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

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

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

regsvr32 msxml4.dll