小编Gre*_*ski的帖子

这是静态库依赖树中的钻石问题吗?

我有一个问题困扰着我。我想我过去遇到过这个问题,但我在互联网上找不到有关类似问题的信息。

假设我有:

  • 一个“通用”库及其两个不同的静态库:libcommon1.2.a 和 libcommon1.3.a。
  • 一个“额外通用”库,它使用 libcommon1.2.a 并从中提供一个新的静态库。
  • 最终的应用程序使用最新的“common”(libcommon1.3.a)​​和最新的“extra-common”(“common”和“extra-common”链接到该应用程序)。

如果在“common”v1.3 和 v1.2 之间仅添加新组件,一切都应该没问题,对吗?

如果 'common' v1.3 更改了 'extra-common' 使用的 API,那么在将 'extra-common' 与应用程序的其余部分链接时,我可能会遇到缺少符号的问题。

如果“common”v1.3 保留与 v1.2 相同的 API,但更改了一些内部结构,是否可能在运行时出现一些崩溃(由于对象大小的变化或可能由 vtable 的更改等引起)?

您能否向我发送一些我可以通过谷歌搜索的术语、一些可能导致运行时崩溃的场景或一些文章链接?这样的术语是否类似于“库依赖项中的钻石问题”?

我会感激任何事情。

c++ linker compiler-errors static-libraries static-linking

5
推荐指数
1
解决办法
1149
查看次数

奇怪的C++模式减少了编译时间

我在Tizen Project的OpenSource代码中找到了可以缩短项目编译时间的模式.它在项目的许多地方使用.

作为一个例子,我选择了一个类名ClientSubmoduleSupport.它很短.以下是他们的来源:client_submode_support.h,client_submode_support.cpp.

正如你所看到的,client_submode_support.h它被定义为a ClientSubmoduleSupport并且client_submode_support.cpp有定义的ClientSubmoduleSupportImplementation类可以完成工作ClientSubmoduleSupport.

你知道这种模式吗?我很好奇这种方法的优点和缺点.

c++ optimization design-patterns compilation-time tizen

4
推荐指数
1
解决办法
768
查看次数