在MSVC中强制解析多个功能定义

时间:2018-08-07 05:40:53

标签: c++ visual-studio linker linker-errors

我正在尝试链接一个项目,该项目具有2个共享功能的库(一个是另一个的分支),并且具有程序必需的独特功能。由于它们共享功能,因此链接程序会抱怨多个定义。 MSVC中是否有一种方法可以强制“使用遇到的第一个”,而不必在体系结构上进行更改?

1 个答案:

答案 0 :(得分:1)

简单来说,即使存在多个定义,也需要使用 / FORCE:MULTIPLE 链接器选项来使VC ++生成有效的exe或dll文件。您需要将此添加到:

属性->链接器->命令行->其他选项

您可以查看MSDN文档以了解警告。生成的文件可能无法按预期方式工作,并且文档中没有任何内容表明链接器将采用它看到的第一个定义,尽管可能是这种情况。如果您不使用任何选项而使用 / FORCE ,则就像您同时通过了两个选项 / FORCE:MULTI / FORCE:UNRESOLVED 一样。 / p>

对于更细粒度的解决方案,可以确保链接器采用它看到的第一个定义,请查看以下答案:

Visual Studio 2010 library linking order