gpt4 book ai didi

c++ - 循环链接库

转载 作者:行者123 更新时间:2023-11-28 02:05:57 25 4
gpt4 key购买 nike

我们有一个应用程序,其中的代码组织在几个库中,其中一些库依赖于其他库,因此我们有一个依赖树,如

App
|
+--------+--------+
| | |
v v v
lib1 lib2 lib3
| |
v v
lib3 lib3

最近有人在 lib3 中添加了一个新方法,它依赖于 lib2 中定义的类,并且由于它会生成循环包含,我们在 lib3 中的头文件中对所需的类进行了前向声明。

现在,每个库都被编译成一个静态库,然后链接到它各自的链接列表,所以 lib2 在 lib2 的链接列表中,lib3 在 lib2 的链接列表中。

到目前为止,这工作得很好,但我想知道与具有这种编译和链接依赖关系相关的缺点。我认为 lib2 中的更改可能不会被 lib3 注意到,除非它被重新编译,但我检查过,lib2 中任何头文件的任何更改都会触发 lib3 的重新编译(这里有点运气)。

还有其他我应该注意的重要缺点吗?

最佳答案

Is there any other important drawback I should be aware of??

嗯,order of libraries指定用于链接实际上很重要。

为了摆脱链接器用来解决这些依赖关系的顺序,通常会提供一个选项来对它们进行分组,就像这些只是使用一个 .obj/ 池.o 文件。

对于 GCC 编译器,这些选项是 -Wl,--start-group,-Wl,--end-group .

关于c++ - 循环链接库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37531818/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com