在分发Windows本机应用程序时,我们还需要打扰vcredist.exe吗?这些是否与Win-7捆绑在一起?
如果没有,是否有任何技术原因这些不会通过例如Windows更新 - 而不是让我们给客户带来另一件事 - 那就是工作吗? (好吧,这可能听起来很有争议,但我真的很想知道这些库在Windows机器上没有默认安装/更新的原因)
答案 0 :(得分:2)
我认为这取决于你的联系方式。如果您直接链接到kernel32.dll等,那么它当然没关系(即嵌入了c运行时库),但Microsoft不推荐这种分发方法。
如果您通过msvcr80 / 90 /无论2010 is.dll进行链接,那么您可能需要像在XP上那样分发该运行时库,但它并不是标准配置。 msvcr80来自Vista,但msvcr90不是我不认为 - 虽然它可能会被Windows更新添加。尽管如此,你不能依赖它在那里,因此故障保护是为了以防万一。有一份副本。
据我所知,msvcrt.dll(mingw链接)分发了所有内容> XP。 vc6链接到这个吗?那时我没有VC ++。
使用Windows SDK中的depends.exe
查看可执行文件,并在Windows API的各个部分之外进行解决。
答案 1 :(得分:1)
是的,你这样做。否则,当您尝试运行程序时,程序会崩溃。许多用户没有运行Win7,即便如此,也没有办法确保安装运行时而不将其包含在安装程序中。
或者,您可以链接运行时的静态构建,从而避免使用C运行时可再发行组件的麻烦。
答案 2 :(得分:0)
使用GCC编译时,我总是链接到MSVCRT.DLL,它始终存在于XP和更新版本。
答案 3 :(得分:0)
这是对拉里奥斯特曼于4月14日23:29发表的评论的回应:
你说:
msvcrt.dll不是C运行时。它是Windows的内部组件,永远不应该是 由第三方应用程序使用。您会注意到在MSDN上找不到任何引用 使用这个DLL。曾几何时,第三方应用程序使用了这个,但那并不是 案件大约10年。 - 拉里奥斯特曼4月14日23:29
这似乎违背了基于访问msvcrt.dll的mingw系统的整个前提,你的评论让我更好地理解了mingw的工作原理。事实证明,mingw仍然使用1998年发回的msvcrt.dll!看到这个链接:
谢谢,
托德