【发布时间】:2011-02-02 22:45:33
【问题描述】:
我正在 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
非常感谢任何见解。
【问题讨论】:
标签: c++ visual-studio linker msvcrt