【发布时间】:2021-08-27 03:55:03
【问题描述】:
有人可以解释为什么我在以下设置中遇到 LINK-Errors:
我有一个静态 C++ MyOwnLib.lib,它使用了一些静态第三方 LibA.lib、LibB.lib、LibC.lib。只有 MyOwnLib.lib 使用了这个第三方库的一些实现,因此我在 MyOwnLib.cpp 文件中 #include 了所有第三方库,而不是 MyOwnLib。 h 文件。
现在: 当我构建 MyOwnLib.lib 时,它的工作没有错误。
但是,当我使用/链接 MyOwnLib.lib 到我的 Tool.exe 项目时,我得到了属于第三方库的方法/类型的 LINK 错误,尽管我只使用了MyOwnLib.cpp 文件。
我什至没有在我的 Tool.exe 项目中使用任何第三方方法。
我发现:还有一些属于我使用的第三方库的 .lib 文件,我真的不需要,但只要我将它们链接到 MyOwnLib.lib ,我的 Tool.exe 项目中不再出现 LINK 错误。然而,这个“不需要的库”使 MyOwnLob.lib 非常大,我实际上想避免这种情况。
我正在寻找类似的问题,但没有找到解释。
更新: 我刚刚发现,使用 pIndom 前向声明的类可以使用第三方库的类型/方法,并且即使我做了 not 链接 any 也会正确构建/编译图书馆。
为什么会这样?如果我在普通类中使用类型/方法,我会得到预期的 LINK 错误。 ?
谢谢
【问题讨论】:
-
可能不是很有帮助的提示:这可能意味着 MyOwnLib.lib 不包含它的所有依赖项。
-
如果您遇到链接错误,那么这些库的部分将在您的
Tool.exe中以某种方式使用,例如通过包含的标头中的一些依赖项。 -
我也是这么想的,但我的 Tool.exe 项目中没有包含与任何第三方库文件相关的内容。
标签: c++ static-libraries static-linking