2012-04-26 58 views
3

我有两个C++程序包A和B,其中A依赖于B.我想通过具有吞下B码的最小部分要打破这种依赖关系,从而使B可以被抛出完全。合并两个C++封装

没有人有我怎么会简介包A找出到底有类/功能中的任何意见,等我需要的B带来的?

编辑: 我只是删除软件包B,并经过(很多)循环的编译A,从B复制文件,相应地更新了Makefile.am。现在我很确定我已经臃肿的A包含了比需要更多的东西。我如何找到在执行程序/库中从未使用过的A`代码部分?

+4

这可能有点痛苦,但你总是可以删除'B',重新编译并查看你得到的错误消息:)然后从源代码管理中恢复你实际需要的东西。一旦你这样做了,作为第二步,你可以将你保存的东西迁移到'A'。 – 2012-04-26 19:25:07

+0

我一直在做这个。是的,真的很痛苦。我把第一层丢失的文件拖回去,并重新编译,这给了我所依赖的东西。某些第二层文件可能会被删除,如果我剪掉了我实际上并不需要的第一层文件的一半。 – ajwood 2012-04-27 13:29:01

回答

0

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

1

我认为有作用的三种可能的方式:

  1. 真的导入必要的东西:撤消你做了什么,再做一遍,但这次不从B,而仅仅是拷贝整个文件编译器告诉你的单个函数缺失。

  2. 根据您当前的情况,让一些工具为您分析代码(请参阅Looking for a free source code analyzer (Function depedency tree)Looking for a free source code analyzer (Function depedency tree)),或使用全部A编写大量代码并运行代码覆盖率分析。

  3. 注释掉从B(不在标题中)复制的源中的函数。现在你的链接器会抱怨任何缺失的函数。取消注释这些,删除其余部分,包括他们在标题中的声明。这是第一个相反的方法。