如何解决冲突的链接器依赖项?

Meh*_*dad 8 c linker dllexport visual-c++

如果我有两个图书馆,A.libB.lib,这两个出口foobar,我怎么知道使用符号链接fooA.lib和符号barB.lib

sho*_*app 3

你不能。对于您的示例,您可以使用其中的定义,foo.libbar.lib不能同时使用两者的定义(特别是如果您无法重新编译库并设置符号可见性以便仅导出所需的符号)。您将它们链接到您的应用程序的顺序将取决于使用哪个库的定义(您必须使用科学方法,我认为第一个链接的获胜)。Niklas Hansson 的答案是动态执行此操作的好方法,但似乎您也不想修改原始应用程序来动态挑选/选择要从库中取出的符号。

如果您确实愿意,可以使用十六进制编辑器修改符号表,以便您不想导出的符号具有不同的名称(hacky,但它会起作用)。我知道在 Linux 上有一个名为 的工具objcopy可以让你做到这一点(不确定 Windows 上是否如此)。