在一个非常古老的代码库中,我们为Visual C ++项目设置提供了一些令人困惑且看似不必要的构建设置。
我们的C ++项目是使用visual studio(目前正在使用vs 2010)构建的,并且在链接器选项中,有一些库被指定用于忽略特定的库'链接器设置。其中一些库是:msvcirt.lib和msvcrtd.lib。
所以对于这个问题: 我无法弄清楚为什么忽视这些特定的图书馆是必要的?
我最好的猜测是: 也许在视觉工作室的早期还有必要吗? ......出于一些奇怪的原因,只有那些知道它的人才知道。
默认情况下,使用VS 2010制作C / C ++项目(即.vcxproj)时,不会明确忽略这些库。因此,我99%确定99%的时间都不需要此链接器设置。有没有人同意我的意见?
当我使用依赖walker来检查我构建的任何旧DLL时,我可以看到,如果我在ADVAPI32.dll中链接它是对msvcrt.dll的依赖。但那真的不应该是我关心的......
答案 0 :(得分:2)
当您链接多个编译方式不同的库时,核心库中存在冲突。
我遇到了一些问题,在使用/ clr标志编译C ++ / CLI时我必须使用它。
一些例子:
Difficulty Building with Visual Studio 2010
Visual Studio .NET 2003 - Ignore Specific Library for libcmt vs libcmtd
答案 1 :(得分:2)