【问题标题】:How implementarion code exist just including header file仅包括头文件的实现代码如何存在
【发布时间】:2012-06-25 20:30:12
【问题描述】:

这是一个理论上的疑问。 假设你有一个只有两个文件的小库:lib.h。 lib.cpp 的头文件,实现代码。 按照惯例,在 C++ 中,我们将 lib.h 包含在 lib.cpp 中,也就是说,lib.h“不知道”“lib.cpp”的存在。 所以,要在程序中使用我们的库,假设:myprogram.cpp 和 myprogram.h,我必须只包含“lib.h” 那么,我的程序将如何加载头文件的实现呢?如果头文件“不知道”实现文件的存在?

【问题讨论】:

  • 您还必须将库源代码编译为二进制形式(即目标文件,或静态或共享库),并将应用程序代码链接到它。参见例如en.wikipedia.org/wiki/Linker_(computing).
  • 你问题的前提是错误的。实现代码不一定只存在头文件。

标签: c++ header include


【解决方案1】:

通常您将实现编译到一个库中并将您的程序链接到该库。因此,除非实现代码实际上位于标头中,或者位于标头包含的文件中并因此也分发,否则您断言“实现代码仅包含头文件”是错误的。

【讨论】:

    【解决方案2】:

    您必须告诉链接器lib 文件,例如lib.liblib.so

    .cpp 文件将编译为对象文件,然后编译为 .lib.so 文件。 在带有myprogram.cpp 的项目中,您必须将来自lib.cpp.lib/.so 文件通知链接器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-08
      • 2019-02-18
      • 2015-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多