在C ++中将实用程序DLL拆分为更小的组件

时间:2009-04-15 15:11:54

标签: c++ dll mfc

我们有一个DLL形式的核心库,供多个客户端应用程序使用。它有点臃肿,一些应用程序只需要这个DLL提供的功能的一小部分。所以现在我们正在考虑将这个庞然大物分成更小的组件。

我的问题是:任何人都可以推荐一条路径来将这个膨胀的DLL划分为一组具有一些相互依赖但不一定需要所有其他模块的模块吗?

以下是我看到的选项,但我希望有人可以提供其他可能性:

  1. 创建一个“核心”dll和几个使用核心和可能的其他卫星DLL的“卫星”dll。
  2. 将膨胀的DLL的内容细分为主DLL使用的静态库(以保持相同的功能),但不想使用膨胀版本的应用程序可以将他们需要的静态库组装到自己的dll或者应用程序本身。
  3. 我对此提出了犹豫,但我认为注意该应用程序使用MFC可能很重要。

    感谢您的想法。

2 个答案:

答案 0 :(得分:2)

与你的问题有点关系的是这个问题,关于将一个非常大的C模块拆分成更小的模块。

How do you introduce unit testing into a large, legacy (C/C++) codebase?

似乎你的问题与将一些大量代码分解为更模块化系统的更大问题有关。上面的链接肯定是推荐阅读。

答案 1 :(得分:1)

没有所有细节,有点难以帮助,但这是我在你的情况下会做的事情

  • 提供你发布的whate3的静态和dll版本 - 适用于MT和单线程。
  • 尝试从不同的客户那里收集哪些项目应该组合在一起以提供合理的细分 - 而不需要依赖层。

拥有一个“核心”模块听起来是个好主意 - 并确保您没有太多的依赖关系 - 您可能希望保持简单。

您可能会在练习后发现一个大dll实际上是合理的。

另一个考虑因素是维护多个DLL以及静态库和DLL会大大增加维护的复杂性。

你是每次都要一次性释放它们,还是混合搭配?这里要小心 - 并且知道你可以创建测试问题

如果没有人抱怨DLL的大小,那么您可能需要考虑将其保留原样。