我最近从使用MFC库的VS2005项目中获取了源代码。首先,我将项目升级到VS2012,现在我可以在Windows 8上成功构建和运行该软件。接下来,我想在Windows XP机器上部署该软件。
我已将Platform Toolset设置为构建到Windows XP(使用v110_xp选项),并且已在目标计算机上安装了“Visual C ++ Redistributable for Visual Studio 2012 Update 1”。当我运行该软件时,似乎没有任何事情发生。通过一些日志记录函数,我可以确定对LoadFrame(IDR_MAINFRAME)的调用会导致kernel32.dll中出现异常。我无法进一步调试到LoadFrame,因为VS2012上没有Windows XP上的远程调试。
任何想法可能出错? Visual C ++ Redistributable软件包是否在目标计算机上安装正确的版本?接下来我应该尝试什么?
更新
我的项目已经设置为使用7.1 SDK,并且在链接器选项中将所需的最低版本设置为5.01。
如果我使用InstallShield生成安装程序并包含MFC,CRT和ATL可再发行组件,则安装程序可以运行,我的程序现在可以在Windows XP上运行。我对可再发行组件的理解是,它们只是将相关的dll复制到system32文件夹(或等效文件)中?那是对的吗?
但是,如果我只是复制文件,请运行vsredist_x86.exe或使用Inno Setup安装软件& dll,我的程序不再有效。
答案 0 :(得分:2)
我相信你已阅读this blog。总之,您需要使用7.1 SDK,并且需要在链接器选项中将最低要求版本设置为5.01。
答案 1 :(得分:2)
使用正在运行的InstallShield项目和无法运行的Inno项目,我能够确定这里真正的罪魁祸首是未注册的msxml4.dll。我收到的错误没有给出这个结果的真正线索,但我最终到达那里......
regsvr32 msxml4.dll