Visual Studio 2012 Project 针对使用 MFC 的 Windows XP
Visual Studio 2012 Project targeting Windows XP using MFC
我最近从一个使用 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
- 什么是"MFC Dialog Extension"?(Windows/C++ 新手 - Linux 背景)
- 如何在Windows C MFC应用程序状态栏中禁用CAP NUM SCRL指示器
- 如何使MFC CToolbar按钮更加一致,以使Windows 7/10上的高DPI了解应用程序
- Windows 32 位 mfc 应用程序的虚拟内存中的地址
- 如何在 MDI MFC C++ Windows 应用程序中动态更改 CFormView 宽度或高度?
- C++:Windows 10 x64 和 Windows 7 x64 上的 MFC 应用程序
- 标准输出输出不会显示在基于 Windows MFC 对话框的应用的控制台上
- MFC和Windows API之间的区别在获取屏幕分辨率方面
- 在swig.i文件中,如何为基于mfc的第三方dll解析ms-windows-vc++typedef类型
- 注册以在 MFC 中发出 Win32 事件信号时接收 Windows 消息
- Windows 7:MFC ActiveX 控件不会在任何文件夹中创建文件
- C1189: #error : 窗户。H 已包括在内。MFC 应用不得 #include < Windows.h>
- MFC功能区在windows 2008中崩溃
- MFC:类似于Windows资源管理器的应用程序,可以与主线程并行导出文件
- 正在获取Windows时区信息(C++/MFC)
- 字体在Windows 8上变小 - 在C++/MFC程序中.如何避免这种情况
- MFC Windows - NVIDIA 3D主动快门API替代
- MFC Windows菜单,自定义
- __targv在我的MFC Windows应用程序中为空.参数 == 1
- 在大型MFC windows应用程序中使用Qt会加快开发速度吗?