4

在分发 Windows 原生应用程序时,我们还需要使用 vcredist.exe 吗?这些是否与 Win-7 捆绑在一起?

如果没有,是否有任何技术原因无法通过例如 Windows 更新将这些产品交付给人们——而不是让我们用另一种东西来给客户带来负担。必须工作?(好吧,这听起来可能有争议,但我真的很想知道这些库没有在 Windows 机器上默认安装/更新的原因)

4

4 回答 4

2

我认为这取决于您如何/链接到什么。如果您直接链接到 kernel32.dll 等,那么当然没关系(即嵌入了 c 运行时库),但 Microsoft 不推荐这种分发方法。

如果您通过 msvcr80/90/whatever 2010 is.dll 链接,那么您可能需要分发该运行时库,因为在 XP 上它不是标准配置。msvcr80 出现在 Vista 上,但我不认为 msvcr90 没有 - 尽管它可能会被 Windows 更新添加。尽管如此,你不能依赖它在那里,因此故障保护是拥有它的副本以防万一。

据我所知,msvcrt.dll(mingw 链接到的)随所有 > xp 一起分发。vc6是否链接到这个?那时我还没有 VC++。

查看来自 Windows SDK 的可执行文件,depends.exe并找出它在 Windows API 部分之外附带的内容。

于 2010-04-14T20:55:50.707 回答
1

是的你是。否则,当您尝试运行程序时,您的程序会严重崩溃。许多用户没有运行 Win7,即便如此,如果不将其包含在您的安装程序中,也无法确保他们安装了运行时。

或者,您可以链接到运行时的静态构建,避免使用 C 运行时可再发行组件的麻烦。

于 2010-04-14T20:52:41.157 回答
0

使用 GCC 编译时,我总是链接 MSVCRT.DLL,它在 XP 和更新版本上总是存在。

于 2010-04-14T20:54:44.070 回答
0

这是对拉里奥斯特曼 4 月 14 日 23:29 评论的回应:

你说:

msvcrt.dll 不是 C 运行时。它是 Windows 的一个内部组件,不应由 3rd 方应用程序使用。您会注意到,您在 MSDN 上找不到任何使用此 DLL 的引用。曾几何时,第 3 方应用程序使用了此功能,但大约 10 年来一直没有这种情况。– 拉里奥斯特曼 4 月 14 日 23:29

这似乎违背了基于访问 msvcrt.dll 的 mingw 系统的整个前提,您的评论让我更好地了解了 mingw 的工作原理。事实证明,mingw 仍然使用 1998 年发布的 msvcrt.dll!请参阅此链接:

http://www.mingw.org/wiki/C99

谢谢,

托德

于 2010-11-12T16:32:07.797 回答