3

我有两个 C++ 包 A 和 B,其中 A 依赖于 B。我想通过让 A 吞下 B 代码的最小部分来打破这种依赖关系,这样 B 就可以被完全抛弃。

有人对我如何分析包 A 以准确找出我需要从 B 引入的类/函数等有什么建议吗?

编辑:我只是删除了包 B 并经历了(很多)编译 A 的循环,从 B 复制文件,相应地更新了 Makefile.am。现在我很确定我已经用比需要的更多的东西来膨胀包 A。我怎样才能找到从未在其产生的可执行文件/库中使用的 A` 代码部分?

4

2 回答 2

1

我认为有三种可能的行动方式:

  1. 真正只导入需要的东西:撤消你所做的,然后再做一次,但这次不要从 B 复制整个文件,而只是复制编译器告诉你丢失的单个函数。

  2. 根据您目前的情况,让一些工具为您分析代码(请参阅寻找免费的源代码分析器(功能依赖树)寻找免费的源代码分析器(功能依赖树)),或者使用所有 A并运行代码覆盖率分析。

  3. 注释掉从 B 复制的源中的函数(而不是在标题中)。现在您的链接器将抱怨任何缺少的功能。取消注释这些,删除其余部分,包括它们在标题中的声明。这是与第一种相反的方法。
于 2012-11-21T10:48:11.810 回答
0

也许 objdump 会给你一些有用的信息。在二进制文件(objdump -t)上使用它,它应该能够显示有关导入函数的一些有用信息。

于 2012-04-26T18:44:45.983 回答