VS 2012 - XP Issues

VS 2012 - XP Issues

本文关键字:Issues XP 2012 VS      更新时间:2023-10-16

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

"过程入口点 FlushProcessWriteBuffers 不能 位于动态链接库内核32.dll"中。

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

任何帮助都非常感谢,

马赫什。

是的,C 运行时依赖于 FlushProcessWriteBuffers()。 msvcrt110.dll 和 libcmtl.lib 的更新版本,即您与更新相处的那些,不再直接链接到该函数,它们使用 GetProcAddress() 来查找它,如果错过了,则一瘸一拐地走。 所以你不应该得到这个错误。

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

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

VS2012 更新 1 解决了此问题。

但更新 1 不仅仅是关于新的 Windows 平台。它还使您能够在Visual Studio 2012中使用本机C++应用程序面向Windows XP。

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

您可以通过在

安装程序中包含开发计算机中的 VC11 合并模块(程序文件\通用文件\合并模块)来解决此问题。这比必须在安装程序中运行 redist exe 更容易。

如果您使用 WIX:合并模块添加

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