VS 2012 - XP问题

时间:2012-12-09 20:55:28

标签: c++ visual-studio-2012 windows-xp

我也安装了VS 2012 Professional和XP更新。我使用v110_xp构建我的项目作为VS 2012上的平台工具集。我的项目的.msi包在Win 7上正常安装但在Win XP SP3上失败。 XP SP3上报告的错误是 -

  

“程序入口点FlushProcessWriteBuffers不可能   位于动态链接库Kernel32.dll“。

虽然从VS 2005构建的同一项目正在XP SP3上正常安装。我不确定VS 2012上发生了什么。_WIN32_WINNT设置为0x0501。有人可以指导如何解决问题吗?

非常感谢任何帮助,

马赫什。

3 个答案:

答案 0 :(得分:13)

是的,C Runtime依赖于FlushProcessWriteBuffers()。 msvcrt110.dll和libcmtl.lib的更新版本,与更新相关的版本,不再直接链接到该函数,它们使用GetProcAddress()来查找它,如果它是missng则跛行。所以你永远不应该得到这个错误。

你部署了错误版本的msvcrt110.dll,一个旧版本而不是更新版本的错误版本非常高。您可以在c:\ windows \ system32中找到它,查看属性。我的版本是11.00.51106.1,日期为11/5/2012。可以使用单独的安装程序here

答案 1 :(得分:3)

您正在安装的VS2012运行时使用XP中不可用的功能。请参阅此MS文章:Targeting Windows XP with C++ in Visual Studio 2012,其中解释了更多内容并提供了一些解决方法。

VS2012的

Update 1解决了这个问题。

  

但Update 1不只是关于新的Windows平台。它还使您能够在Visual Studio 2012中使用本机C ++应用程序来定位Windows XP。

如果您使用更新1构建并仍然遇到问题,那么我怀疑您正在安装过时的运行时。您需要部署随更新1一起提供的运行时。

答案 2 :(得分:0)

您可以通过在安装程序中包含开发机器(程序文件\通用文件\合并模块)中的VC11合并模块来解决此问题。它比在安装程序中运行redist exe更容易。

如果您使用WIX:merge module addition

我已经在服务器03,xp64和xp32上进行了测试。