Windows 什么';MSVCR DLL的交易是什么?

Windows 什么';MSVCR DLL的交易是什么?,windows,dll,Windows,Dll,这是干什么用的 为什么他们有不同的版本?可用的版本是什么?每个版本与什么匹配 为什么它似乎会导致许可证问题?例如:我发现一些工具,比如py2exe,无法捆绑它们,但您仍然需要它们来运行生成的exe 如果要为Windows分发软件,如何解决此问题: 技术上:如何确保用户有一个?如果没有,如何提供?适用于所有版本的Windows 法律上:它对自由软件也同样有效吗?营利性软件?有什么特别的事情要做吗 这是微软Visual C++运行时。它们与编译器版本匹配 您可以对其进行静态链接,从而删除依赖关系

这是干什么用的

为什么他们有不同的版本?可用的版本是什么?每个版本与什么匹配

为什么它似乎会导致许可证问题?例如:我发现一些工具,比如py2exe,无法捆绑它们,但您仍然需要它们来运行生成的exe

如果要为Windows分发软件,如何解决此问题:

  • 技术上:如何确保用户有一个?如果没有,如何提供?适用于所有版本的Windows
  • 法律上:它对自由软件也同样有效吗?营利性软件?有什么特别的事情要做吗

这是微软Visual C++运行时。它们与编译器版本匹配


您可以对其进行静态链接,从而删除依赖关系。您的安装可以检测用户是否需要它。

Windows可执行文件使用的是C运行时。用C或C++编写的,所以它们有C运行时的要求,像任何C或C++程序一样。 它是一个私有DLL,仅由Windows可执行文件使用。你不能发布或覆盖它,那将是灾难性的。DLL受Windows文件系统保护功能的保护,覆盖它将使其再次自动还原文件


您不应该依赖它,Microsoft没有义务在Windows版本之间保持它的兼容性。然而,这并没有减缓MinGW项目的速度,他们还是使用了它。或者,如果您使用的是一个非常旧的VisualStudio版本,其CRT也使用了该名称,这可能是一个问题,而15年前的版本6也存在这个问题。YMMV,如果你最终依赖它。

不是我的票,但是MS最近没有删除静态选项吗?我记得从vs2010起,没有更多的/mt/ml,只有/md/mdd,因此没有静态链接。@b说明您的问题不清楚。@b说明它存在。您需要阅读Microsoft的许可证和文档才能理解重新分发参数。这就像回答“阅读文档”或“谷歌it”一样,这是不受欢迎的。法律问题在这里是离题的,所以您可以期待最好的评论。公平地说,我应该将这部分转移到更合适的Q/a平台。其余部分仍然保留。您不能通过复制microsoft crt dll来分发它们,但欢迎您将microsoft可分发软件包与您的产品一起提供。由于错误或安全原因,Microsoft可以更新这些dll,但我从未看到有东西因此而损坏。如果我想分发py2exe Bundle软件,我确实依赖它。你没有。在中非常明确,您对msvcr71.dll或msvcr90.dll有依赖关系。这些是不同的版本,与msvcrt.dllOk不同,我把那个部分搞错了。我的问题确实是关于msvcr的。我不知道它们也是msvcrt。我的错误。你不能假设用户已经有一个副本,你必须自己部署它。而且它不是免费软件,您必须拥有Visual Studio的许可证才能获得重新分发DLL的权利。任何版本都可以,包括免费的快速版afaik。