我想问一下msvcr100与msvcrt相比是否有优势,如果有的话,那么这些优势是什么。
当使用msvc编译器进行编译时,我得到的可执行文件链接到了msvcr100,因此需要安装MS Visual C++ Redistributable才能运行。如果我使用g ++(mingw)进行编译,则没有此要求。我猜它链接到msvcrt而不是msvcr100。
我更喜欢尽量减少依赖关系,所以我想知道使用链接到mscvr100的编译器是否有任何意义。
谢谢。
我想问一下msvcr100与msvcrt相比是否有优势,如果有的话,那么这些优势是什么。
当使用msvc编译器进行编译时,我得到的可执行文件链接到了msvcr100,因此需要安装MS Visual C++ Redistributable才能运行。如果我使用g ++(mingw)进行编译,则没有此要求。我猜它链接到msvcrt而不是msvcr100。
我更喜欢尽量减少依赖关系,所以我想知道使用链接到mscvr100的编译器是否有任何意义。
谢谢。
Msvcrt.dll是一个私有 DLL,仅供Windows自身使用。不同版本的Windows有不同版本的msvcrt.dll。
当你发现你使用CRT的方式可能会在特定的Windows版本上失败时,你会感到非常头疼。新版本的Windows可能会有一个新的msvcrt.dll副本,这会导致程序失败。这个问题通常被称为DLL地狱。
使用msvcr100.dll的好处是出现这种情况的几率要小得多。你使用已知版本的CRT。即使Windows本身有一个破坏性的更改破坏了msvcr100.dll,那么仍然有解决办法:更新它。这对于msvcrt.dll来说是不可能的,因为它是由文件系统保护功能覆盖的DLL。用安装程序覆盖它通常会非常灾难性,因为这会破坏Windows本身。但它不会导致失败,Windows会自动恢复它。这也是你不应该遵循Voith的建议的原因。