【问题标题】:Can't include headers from a static library (VS17) [duplicate]不能包含来自静态库(VS17)的标题[重复]
【发布时间】:2018-12-11 23:26:35
【问题描述】:

我创建了一个包含一些 .h 文件的静态库,并且需要将该库包含到我的第二个项目中,该项目也将作为库输出。将第一个 .lib 文件复制到当前项目源文件夹后,将其添加(可能是多余的)作为 Additional Dependencies Directory 并将 .lib 文件本身添加为 Additional Dependency,我明白了

cannot open source file "Person.h"

当我尝试编译它时出现错误输出,尽管有

#include "Person.h"

在我目前正在处理的.h 文件中。我错过了什么?

编辑:我已经在 Additional Include Directories 下添加了原始项目的源文件夹,它似乎可以工作,但我很困惑 - 这对我使用预制的 @987654327 有什么帮助@ 文件,如果我只是引用另一个项目的标头?

编辑:如果在负面反馈之后至少有一个简短的评论,我将不胜感激,这样我就可以知道要改进什么。谢谢。

【问题讨论】:

  • 您是否也设置了“附加包含目录”?
  • 该错误绝对与您的库二进制文件无关。如果编译器找不到头文件,则包含目录设置不正确
  • 我相信这是一个您可能必须自己解决的问题。我们不知道您的标头在硬盘驱动器上的位置,也不知道您在Additional Include directories 中输入的内容,以及您是否将该设置应用于所有配置,而不仅仅是活动配置。用很少的信息进行远程调试非常困难..
  • 负面反馈可能是由于缺乏可重复的示例。注意:这对于一个 IDE 问题来说是非常困难的,这会导致回到 @drescherjm 的评论。
  • lib 文件本身不向编译器提供头文件。要在其他项目的代码中使用库,您通常必须在某处安装二进制文件(.lib 文件也 .dll,如果动态链接)和头文件,并告诉编译器在哪里查找头文件和库。

标签: c++ visual-studio static-libraries libraries lib


【解决方案1】:

正如 @drescherjm 和 @UnholySheep 在 cmets 中解释的那样,.libs 不是独立的模块。

通过在Additional Include Directories下添加包含原始.h文件的文件夹来解决问题。

【讨论】:

    猜你喜欢
    • 2019-11-29
    • 1970-01-01
    • 2011-07-06
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 2014-01-01
    • 1970-01-01
    相关资源
    最近更新 更多