【问题标题】:Visual Studio 2012 Project targeting Windows XP using MFC使用 MFC 面向 Windows XP 的 Visual Studio 2012 项目
【发布时间】:2013-01-11 17:59:36
【问题描述】:

我最近从一个使用 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 中的异常。由于 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,我的程序将不再工作。

【问题讨论】:

    标签: c++ mfc visual-studio-2012 inno-setup installshield


    【解决方案1】:

    相信你已经阅读了this blog。综上,需要使用7.1 SDK,并且需要在linker options中设置最低要求版本为5.01。

    【讨论】:

      【解决方案2】:

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

      regsvr32 msxml4.dll
      

      【讨论】:

        猜你喜欢
        • 2013-05-06
        • 2012-11-15
        • 2013-08-06
        • 1970-01-01
        • 2012-12-02
        • 2013-03-31
        • 2012-06-23
        • 1970-01-01
        • 2012-10-19
        相关资源
        最近更新 更多