不能包含来自静态库(VS17)的标题[重复]
Posted
技术标签:
【中文标题】不能包含来自静态库(VS17)的标题[重复]【英文标题】:Can't include headers from a static library (VS17) [duplicate] 【发布时间】: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,如果动态链接)和头文件,并告诉编译器在哪里查找头文件和库。
【参考方案1】:
正如 @drescherjm 和 @UnholySheep 在 cmets 中解释的那样,.lib
s 不是独立的模块。
通过在Additional Include Directories下添加包含原始.h
文件的文件夹来解决问题。
【讨论】:
以上是关于不能包含来自静态库(VS17)的标题[重复]的主要内容,如果未能解决你的问题,请参考以下文章