我是一名C ++初学者,我正在尝试在Visual Studio中制作一个完全静态的程序(只有一个.exe)。不过,这让我开始思考,因为从用户计算机中提取了一些外部依赖项,例如MSVCP.dll。这些依赖关系是从程序员的计算机中烘焙到程序中的,还是仍被遗漏并从用户那里拉出来了?
-阿里
答案 0 :(得分:1)
这些依赖关系是从程序员的计算机烘焙到程序中的,还是仍被遗漏并从用户那里拉出来了?
作为@Igor注释,您可以选择其中之一。区别是一个(也许很大)单个独立的静态链接的可执行文件,或者一个依赖于本地DLL来运行的文件。
答案 1 :(得分:1)
MS Visual C ++编译器使您可以选择要链接到哪个版本的MS Visual C / C ++运行时库。选择是:
使用简单的hello world程序进行快速测试,使用/ MD时,编译后的可执行文件最终约为12KB,而使用/ MT时,编译后的可执行文件的重量约为219KB,因此大小差异很大,尤其是当您使用运送了很多小程序。
以前,该库还具有单线程版本,从理论上讲,它们可以提供更好的单线程性能和更小的大小,但不再提供较新的CRT版本。大概之间的差别太小了,以至于无法运送整个单独的库版本。