我有以下问题:我使用Microsoft Visual Studio 2012,它将msvcp110.dll添加到我的版本.我已经在这里和那里阅读了一些帖子,我知道这是由于我同时使用iostream和string并将其链接到我的程序.我在我的电脑上使用它没有问题,但我想向其他人展示.所以我的问题是,尽管对其他人尽可能无痛,我怎么能绕过这个问题,仍然使用一些基本的标准好东西?我知道其他人可以安装Visual Studio Runtime的东西,但这有点痛苦.
如果您打算保持应用程序动态链接,则最终用户需要安装Visual C++ Redistributable for Visual Studio 2012.
这是交付应用程序的首选方式,原因如下:
二进制大小 - 您的应用程序二进制文件将更小,因为库函数未链接.
安全性 - Windows Update可以更新Microsoft可再发行的DLL.如果在其中一个库中发现漏洞,他们可以修复它,并且所有动态链接的程序立即不再容易受到攻击.
内存占用 - 如果多个进程都使用相同的DLL,则只需将其加载到(只读)内存中一次.所有进程在内存中共享DLL文本的副本,从而减少了进程的总体内存使用量.
或者,您可以静态链接您的可执行文件.通过在Visual Studio中更改程序的生成选项来执行此操作.
在Visual Studio 2010中,这位于" 配置属性" >" C/C++" > "代码生成" >" 运行时库"下.
默认(/MD
/ /MDd
)告诉VS链接其运行时DLL.
要静态链接,您要将其更改为其中一个非DLL选项(/MT
/ /MTd
)确保选择正确的调试/非调试版本(d
交换机中的少量).
也可以看看:
静态链接与动态链接