Visual Studio "object file does not define any previously undefined symbols"

Visual Studio "object file does not define any previously undefined symbols"

本文关键字:any previously undefined define symbols does Studio object file Visual not      更新时间:2023-10-16

在Visual Studio 2013中使用c++时,我遇到了一个非常奇怪的警告/错误。

我有一个静态库和一个控制台应用程序

静态库导入4个第三方.lib文件及其头文件。控制台应用程序导入静态库和原始4个.lib文件的头文件,以便我可以使用原始4个.lib和我的.lib中的代码。

(我认为在这种情况下这是正确的设置,如果有更好的方法,一定要告诉!)

然而,当我构建静态库时,我得到一个警告:"LNK4221:这个对象文件没有定义任何先前未定义的公共符号,因此它不会被任何消耗此库的链接操作使用"。

但是它从哪里得到的代码,如果不是从库?如果我从导入中删除了.libs,构建就会失败,并指出需要它们!我不知道在这种情况下该怎么办。我很乐意让.libs按原样导入并忽略警告,但是当我试图禁用它们时(在编译器选项中禁用特定警告"4221"下),警告不会被禁用!

编辑:4个第三方的。lib是独立的-他们不使用彼此的代码,所以我需要导入所有的。

我真的很茫然,任何建议都将不胜感激。

我找到了一种在链接器命令行上使用/ignore:禁用警告的方法,但我仍然很困惑,为什么链接器首先给出警告,当删除库作为输入导致多个"未解析的外部符号"错误时。

哦,好吧,问题(算是)解决了。