库依赖"forwarding",还是部分静态库?

Library dependency "forwarding", or partially static libraries?

本文关键字:静态 依赖 forwarding      更新时间:2023-10-16

假设我有A.libb.dll(有自己的b.lib

我需要一个应用程序来链接它们,但我只想通过A.lib来实现这一点。基本上,我需要链接器能够找到从b.dll导出的符号,而不需要显式链接到b.lib

理想情况下,我希望完全消除A.lib,并在b.lib中保留一些代码,其余代码在b.dll中。

编辑

我的目标是创建一个库,它可以直接使用与之链接的应用程序中的某些特殊命名符号,而无需强迫库用户提供指向它们的指针。所述符号(主要是函数)是工具生成的,因此它们的名称通常缺乏任何描述性价值(更不用说它们数量众多)。

您可以将一个静态库项目添加到您的解决方案中,例如C。只有a.lib和B.lib作为附加依赖项,没有代码。它运行lib.exe并将A.lib和B.lib合并到C.lib中。任何后续项目都可以链接到该库。

好吧,只要你篡改项目依赖关系,以确保一切都按照正确的顺序构建,这就应该有效。C项目依赖于A和B,所有使用C.lib的东西都依赖于C。像这样隐藏依赖关系不是最好的做法。