我也安装了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
。有人可以指导如何解决问题吗?
非常感谢任何帮助,
马赫什。
答案 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上进行了测试。