某些C++源文件是为多个 dll 编译的

Some C++ source files are compiled for multiple dll

本文关键字:dll 编译 C++ 源文件 某些      更新时间:2023-10-16

在我们的项目中,我的团队希望为不同的dll使用一些C++源文件(例如MySource.cpp等,将被编译两次以生成A.dll和B.dll)。我将这种情况称为"重复编译"。我认为这是非常糟糕的做法,我主要看到两个原因:

  • MySource.cpp必须能够支持多个编译器。
  • MySource.cpp的所有依赖项都必须在A.dll和B.dll中编译。

这对将多次编译的源代码施加了很多限制。还有其他原因为什么不应该这样做或为什么可以这样做吗?

这就是我们遇到这种情况的方式:我们首先创建了一个模块 X,然后是依赖于 X 的其他模块 Y、Z 等。但是我们没有导出 X 的函数以在 Y、Z 中使用,而是复制了 X 的代码,使 Y 和 Z 模块的代码都包含 X 代码的副本。然后 X 的代码已经进化,现在我们意识到我们需要合并所有这些代码才能拥有真正的依赖关系。现在我们正在讨论上述"管道胶带"解决方案和为 X 创建 API。

我的建议是将 A.dllB.dll 之间常见的函数放入另一个 dll,例如 a_b_common.dll

DLL 函数

可以调用其他 DLL 中的函数。