将多个DLL合并为1

时间:2010-08-29 18:05:49

标签: c++ dll

我想知道是否可以将多个DLL合并为1.我目前正在开发一个依赖于许多动态链接库的C ++项目,因此可以将它们组合成1个DLL文件,如果那么,我该怎么做?

3 个答案:

答案 0 :(得分:5)

  

我确实有这些DLL的源代码,是的。

只需将所有DLL项目中的所有源文件合并到一个DLL项目中吗?

如果你有多个* .def文件(每个项目一个),那么将它们组合成一个* .def文件。

答案 1 :(得分:2)

实际上,没有。从理论上讲,如果你想要做得非常糟糕,你可以做一些事情,比如拆解它们,然后将所有单独的文件重新组装成目标文件,然后将这些目标文件重新链接到一个大的DLL中。实际工作通常是非常重要的 - 有可能会出现像冲突的符号名称需要大量工作才能解决的问题。

一个相当简洁的可能性是将所有DLL打包成一个zip文件(或者你喜欢的任何东西),并有一个小程序将它们解压缩到一个临时目录,运行主程序,然后擦除该目录中的DLL。但是它有一些问题(例如,如果机器在运行期间崩溃/失去电源/其他任何东西,则保留文件的副本。)

编辑:由于您拥有源代码,使用它将所有代码构建到单个DLL中更为合理。在大多数情况下,只需将所有源文件添加到单个项目中,该项目将创建一个DLL作为其输出。你可能(很容易)遇到一些符号冲突。鉴于对源代码的访问,处理这个问题的显而易见的方法是将事物放入命名空间。

答案 2 :(得分:1)

当然不可行。 Dll格式包含将来自多个dll的代码和数据合并为一个所需的所有信息,并重新生成结果代码。

这不是我能想到的任何工具链的标准功能。