某些C++源文件是为多个 dll 编译的
Some C++ source files are compiled for multiple dll
在我们的项目中,我的团队希望为不同的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.dll
和 B.dll
之间常见的函数放入另一个 dll,例如 a_b_common.dll
。
可以调用其他 DLL 中的函数。
相关文章:
- 在使用 Clang 编译 DLL 时指定 DEF 文件
- 如何使用导出的函数交叉编译 DLL
- 从DLL导出函数,LoadLibrary()需要用TEXT转换的字符串才能编译而不会出错
- 为什么我可以在EXE上编译DLL
- 从Windows 10编译VS2017在Windows 7和…上部署..找不到DLL
- 是否可以编译使用 .NET DLL 和 GCC 的C++?
- 在 dll 中为 qLibrary 编译 qobject 时出错
- 如果使用低于 VS2015 的 vc++ 编译器版本编译,则 DLL 中的访问冲突
- W10上不可能使用十字架编译的libpng16-16.dll执行
- MinGW编译的exe-缺少libgcc_s_silj-1.dll
- 在 Windows 10 上使用 CZMQ 编译 dll 时出错
- 我可以将Visual Studio 2015头文件编译成dll并在VS2013中使用它吗?
- 编译时如何隐藏DLL文件中的字符串?
- 某些C++源文件是为多个 dll 编译的
- 集成DLL编译与英特尔c++编译器
- visual c++ MSVC dll编译错误,缺少类型说明符和重定义
- 将针对msvcrt.dll编译的库链接到Visual Studio 10 c++应用程序中
- 如何在 Linux 上使用 DLL 编译 Windows 应用程序
- 用64位的C++dll编译我的32位项目
- 将DLL编译为静态库时,如何处理DLL_EXPORT