1

我正在用 C++ 编写一个大型静态库。在那个库中,我使用了大量静态和动态库中的符号。当我“制作”它时,我不需要链接任何库,因为它是静态的。这是我的问题:我的静态库非常通用。它为同一个接口提供了多个实现(您可以看到驱动程序之类的实现;libA 提供自己的实现,而 libB 提供其等等)。这些实现不打算一起使用,因为其中一些是平台相关的。

链接我的库时出现问题。即使客户端的代码不依赖于任何 lib 符号,客户端也必须链接到我的 lib 使用的符号的所有库。例如,如果客户的代码只依赖于libA,他仍然必须链接到libB,因为我的静态库中有一些来自libB的符号。

您是否知道一种方法来排除这种行为,并且只链接实际使用的库,在客户端代码中推断符号?

谢谢你。

4

2 回答 2

0

您可能会将您的库与其他库动态链接。尝试链接到论文的静态版本。

于 2013-05-20T12:17:01.937 回答
0

如果我理解正确,您的库正在尝试使用defined客户代码预期的符号。not link如果客户的代码没有,您希望链接器指向您的库的某些部分certain symbols。对吗?

如果以上符合您的要求,请考虑http://en.wikipedia.org/wiki/Weak_symbol。我不确定您使用的是哪个工具链,但如果支持的弱符号是实现条件链接的好方法。

于 2013-05-20T12:23:15.027 回答