【发布时间】:2014-02-18 20:06:47
【问题描述】:
请原谅令人费解的标题。
这个问题的设置如下:
我有一个开源库,我已经内置到一堆 .libs 中(如果你好奇的话,VTK)
我有一个使用上述静态库的库。让我们称之为 Lib A。
我还有一个使用上述库(即 VTK)并且也使用 Lib A 的应用程序。
在构建期间,我收到一个链接器错误,告诉我从 Lib A 调用的函数已在链接到应用程序的库中定义(错误:LNK2005)
关于如何解决切换所有内容以进行动态链接的任何想法?
【问题讨论】:
-
您也无法真正解决这个问题 1. 不要在您的主应用程序中链接到 VTK。 2. 动态链接到VTK 3. 不要在Lib A中包含VTK
-
那么,如果我将 VTK 链接到 Lib A 并将 Lib A 链接到主应用程序,那会起作用吗?
-
可以,只要整个VTK都包含在LibA中。虽然,您似乎正在使用 MSVC,但我不确定如何使用 MSVC 可靠地做到这一点,可能使用 /OPT:NOREF 链接器选项。
标签: c++ static-libraries static-linking one-definition-rule