【问题标题】:Why do you have to link libraries AND set include directories为什么必须链接库并设置包含目录
【发布时间】:2011-07-01 04:41:34
【问题描述】:

嘿,所以我有点困惑,为什么在 msVS++ 2010 中,当所有头文件和 cpp 文件都在 static libraystatic 库项目中时,你必须拥有包含目录 在我的情况下。

我使用 cmake 制作了静态库项目,并且我被告知将其设置为的源文件与我现在被告知制作包含目录的源文件相同......似乎我有 2 个相同的 cpp 和头文件.. 除了我的解决方案中静态包含的文件... 为什么?

【问题讨论】:

  • 对问题中的一些陈述感到困惑:你说'2相同的cpp和头文件'。这是否意味着您在一个目录中有 A.cpp 和 A.hpp,而在另一个位置有它们的副本?

标签: c++ include static-libraries


【解决方案1】:

因为 VS++ 在抽象底层实现的同时并没有完全隐藏它。

包含目录和库针对流程的不同阶段,传统上由不同的程序处理。预处理器包含目录,链接器包含库。这些程序现在被称为(或一部分?)VC++,但它的界面仍然显示底层结构。

有些系统允许通过使用编译指示在源代码中(因此在标头中)标记所需的库。这些有几个缺点:

  • 非标准

  • 你不能轻易地用另一个库替换(比如调试/检测/发布,单线程/多线程,...)

【讨论】:

  • @Mehrdad,我认为是 Visual Studio -- 我只是复制了 OP 缩写。
  • 大声笑,显然它不存在(“Visual Studio++”?),但我想这使它成为 OP 的错,而不是你的错......
【解决方案2】:

头文件告诉你关于你正在调用的函数。

静态库包含您正在调用的函数的代码,但不包含有关如何调用它们的信息。

【讨论】:

    猜你喜欢
    • 2010-11-05
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 2015-05-31
    • 2016-02-17
    • 1970-01-01
    相关资源
    最近更新 更多