c++ - 重用 C++ 头文件

标签 c++ file dll header

我有一个包含 2 个项目 AlgorithmAAlgorithmB 的 Visual C++ 解决方案,并且两者共享一个带有类声明的公共(public)头文件 RunAlgo.h 。解决方案中的每个项目都有自己独特的头文件实现。

我正在尝试从公共(public)头文件RunAlgo.h编译一个DLL,并在项目AlgorithmAAlgorithmB中添加对此DLL的引用强>。然后,我在两个项目中都包含了单独的 RunAlgo.cpp 定义文件。问题是我在编译只有头文件的新 DLL 项目时遇到链接器错误。

所以,问题是

  1. 仅包含类声明的头文件能否编译为 DLL(类似于 C# 中包含接口(interface)的类库)?
  2. 对于上述场景,是否有更好的方法来重用项目之间的公共(public)头文件?
  3. 上述方法应该有效吗(重新检查我的代码?)

最佳答案

1 & 3:不,这在 C++ 中没有意义。

库(动态库或其他库)仅在链接期间使用。在编译期间,声明必须以源代码形式对编译器可见。这就是为什么,例如,除了链接标准库之外,您还必须显式 #include 标准库 header 。

2:您已经在做的基本上是唯一的解决方案。将公共(public)头文件放在各自的目录中,并将该目录添加到两个项目各自的包含路径中。

关于c++ - 重用 C++ 头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2983558/

相关文章:

c++ - 使用cuda直接访问全局内存

file - 为什么文件扩展名在 Web 上区分大小写,而在 localhost 上不区分?

c - 让多个线程同时读取文件的最佳方法是什么?

c++ - 使用来自/clr :pure projects 的混合 DLL

C++ for 循环(c++11 方式和旧版本方式)

c++ - 如何将 char 数组作为对函数和 memcpy 的引用传递

c++ - 将逻辑公式转换为C++中的合取范式

java - NumberFormatException 给定一个包含小整数的输入字符串

dll - 嵌入 Mono 的许可证问题?

c++ - 通过 C API 提供 QWidget 的 DLL