我有一个包含 2 个项目 AlgorithmA 和 AlgorithmB 的 Visual C++ 解决方案,并且两者共享一个带有类声明的公共(public)头文件 RunAlgo.h 。解决方案中的每个项目都有自己独特的头文件实现。
我正在尝试从公共(public)头文件RunAlgo.h编译一个DLL,并在项目AlgorithmA和AlgorithmB中添加对此DLL的引用强>。然后,我在两个项目中都包含了单独的 RunAlgo.cpp 定义文件。问题是我在编译只有头文件的新 DLL 项目时遇到链接器错误。
所以,问题是
- 仅包含类声明的头文件能否编译为 DLL(类似于 C# 中包含接口(interface)的类库)?
- 对于上述场景,是否有更好的方法来重用项目之间的公共(public)头文件?
- 上述方法应该有效吗(重新检查我的代码?)
最佳答案
1 & 3:不,这在 C++ 中没有意义。
库(动态库或其他库)仅在链接期间使用。在编译期间,声明必须以源代码形式对编译器可见。这就是为什么,例如,除了链接标准库之外,您还必须显式 #include 标准库 header 。
2:您已经在做的基本上是唯一的解决方案。将公共(public)头文件放在各自的目录中,并将该目录添加到两个项目各自的包含路径中。
关于c++ - 重用 C++ 头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2983558/