如何在编译中使用 /NODEFAULTLIBS 选项?

Cut*_*ute 8 visual-studio-2005 conditional-compilation visual-c++

我有一个包含 2 个项目的解决方案资源管理器。对于一个项目,我已经启用了/clr/mdd。对于父项目,我有/mtd并且没有 clr 支持。当我编译这个时,我得到两个链接器错误,包括以下一个:

链接警告链接 4098:默认库可能与其他库使用 /NODEFAULTLIBS 库冲突

所以我的问题是如何/NODEFAULTLIBS在编译中使用。

提前致谢。

Cha*_*son 8

首先,如果可以的话,您需要找出导致冲突的库。链接警告会告诉你什么吗?

然后您需要打开该项目的属性页,并转到链接器-> 命令行。在“其他选项”区域中,键入:

/NODEFAULTLIB:xxx.lib

其中 xxx.lib 是冲突的库。但是,如果您无法确定它是哪个库,请尝试:

/NODEFAULTLIB

  • 您能否讨论在您的回答中使用此类选项的影响?我尝试使用“/NODEFAULTLIB”,现在有很多链接器找不到的功能。 (2认同)
  • 您必须找出受影响的库,虽然这并不容易,但建议这样做。使用“/NODEFAULTLIB”是不明确的,并且涵盖了所有默认库,如果您依赖某种方式,您肯定会遇到很多链接器问题。 (2认同)