C++ 在Windows XP上更新MSVCRT.dll

C++ 在Windows XP上更新MSVCRT.dll,c++,dll,deployment,windows-xp,msvcrt,C++,Dll,Deployment,Windows Xp,Msvcrt,我正在Windows 8上开发一个小工具,它链接到msvcrt.dll并使用memmove\u。我想在Windows XP机器上部署我的工具。我的msvcrt版本是7.0.30xx,但在XP上是7.0.2600。旧版本不包括memmove\u s,因此程序在启动时崩溃 我尝试安装微软Visual C++可重分发包(2010和2012),但似乎没有MSVCR.DLL。MVCR.DLL是Windows拥有的私有系统DLL。你不应该触摸它,也不应该链接到它 您应该使用Visual Studio附带的普

我正在Windows 8上开发一个小工具,它链接到msvcrt.dll并使用
memmove\u
。我想在Windows XP机器上部署我的工具。我的msvcrt版本是7.0.30xx,但在XP上是7.0.2600。旧版本不包括
memmove\u s
,因此程序在启动时崩溃


我尝试安装微软Visual C++可重分发包(2010和2012),但似乎没有MSVCR.DLL。

MVCR.DLL是Windows拥有的私有系统DLL。你不应该触摸它,也不应该链接到它

您应该使用Visual Studio附带的普通msvcrXXX.dll(例如,如果使用Visual Studio 2010构建,则使用msvcr100.dll)(如果不想将CRT dll与工具分开部署,则只使用CRT静态链接)

另请考虑以下方面的说明:

msvcrt.dll和msvcr110.dll之间有什么区别?

msvcrt.dll现在是一个“已知dll”,这意味着它是由Windows拥有和构建的系统组件。它仅供系统级组件将来使用


一些依赖项(我认为是Qt和OpenSSL)也与msvcrt相关联。是否有系统更新或service pack之类的东西来升级操作系统的MSVCRT.dll?您的应用程序是否使用/MT编译@马特,我在用明格。我不知道libgcc是如何编译的。这个问题通常发生在应用程序链接静态运行时,我想你应该检查你的编译器选项。@Matt我静态链接了
libcrypto++
,因为似乎无法生成该库的dll。但我不知道这与MSVCRT有什么关系……这是一个明的责任,它不能正确地对CRT进行版本转换,因为它依赖于操作系统提供的任何东西。如果XP支持是一项硬性要求,那么您将不得不放弃使用安全CRT功能。