【发布时间】:2014-05-22 23:50:36
【问题描述】:
我正在 Windows 8 上开发一个小工具,它链接到 msvcrt.dll 并使用 memmove_s。我想在 Windows XP 机器上部署我的工具。我的 msvcrt 版本是 7.0.30xx,但在 XP 上是 7.0.2600。旧版本不包含memmove_s,因此程序在启动时崩溃。
我尝试安装 Microsoft Visual C++ Redistributable Package(2010 和 2012 版本),但似乎 msvcrt.dll 未受影响。
【问题讨论】:
-
您的应用程序是否使用 /MT 编译? stackoverflow.com/questions/757418/…
-
@Matt 我正在使用 MinGW。我不知道 libgcc 是如何编译的。
-
这个问题通常发生在应用程序链接静态运行时,我认为你应该检查你的编译器选项。
-
@Matt 我已经静态链接到
libcrypto++,因为似乎不可能生成该库的 dll。但我不知道这与 MSVCRT 有什么关系…… -
这是 MinGW 的责任,它无法正确地对 CRT 进行版本控制,因为它依赖于操作系统提供的任何内容。如果 XP 支持是硬性要求,那么您将不得不放弃使用安全 CRT 功能。
标签: c++ dll deployment windows-xp msvcrt