我正在使用 Visual C++ 2008 构建一个项目,这是一个基于 MFC 的示例应用程序,用于一个静态 C++ 类库,我很快将在我自己的项目中使用。在构建调试配置时,我得到以下信息:
警告 LNK4098:defaultlib 'MSVCRT' 与使用其他库冲突;使用 /NODEFAULTLIB:library
使用推荐的选项后(通过在调试配置的项目链接器设置中的“忽略特定库”字段中添加“msvcrt”),程序链接并运行良好。但是,我想知道为什么会发生这种冲突,为什么我必须忽略一个关键库,如果我以后会出现问题,我是否添加忽略,或者如果我不添加会发生什么(因为程序无论如何都会构建)。
同时,Release 配置警告:
警告 LNK4075:由于 '/OPT:ICF' 规范而忽略 '/EDITANDCONTINUE'
警告 LNK4098:defaultlib 'MSVCRTD' 与使用其他库发生冲突;使用 /NODEFAULTLIB:library
我猜“D”后缀意味着这是 vc++ 运行时的调试版本,不知道这次为什么要使用它。无论如何,将“msvcrtd”添加到忽略字段会导致许多表单的链接错误:
错误 LNK2001:未解析的外部符号 __imp___CrtDbgReportW
任何见解都非常感谢。