gpt4 book ai didi

c++ - 链接静态库导致链接库出错

转载 作者:行者123 更新时间:2023-11-30 02:44:29 25 4
gpt4 key购买 nike

我有一个使用 OpenGL(glfw 和 glew)的小型图书馆项目。现在,项目编译正常,但是当我创建一个新项目并静态链接库项目时,VS 开始在库项目中抛出错误。这是为什么?

更具体地说,我得到这个错误:

error C1083: Cannot open include file 'GL/glew.h': No such file or directory (file: trenums3d.h)

项目设置是这样的:有库项目“Foo”,它被编译成一个静态库(“Foo.lib”)。应用程序项目“Bar”链接“Foo”(我将 Foo.lib 所在的文件夹添加到 Bar 的“附加库目录”,以及“Foo”的源文件夹到 Bar 的“附加包含目录”)。如果我只编译库项目,一切正常,但编译整个解决方案会出现上述错误。

最佳答案

这不是您问题的正确答案,而只是对使用编译语言构建应用程序所需步骤的解释。

构建包含多个文件的项目是一个三步过程:

  1. 创建和编辑源文件和头文件
  2. 编译源文件(此步骤包含 many sub-steps)。此步骤创建所有 translation units 的对象文件
  3. 链接所有目标文件和库以形成最终的可执行文件

在第二步中发出了您问题中显示的错误。与库的链接发生在完全不同的步骤中,通常由与编译器不同的程序完成。


要回答你的问题,如果链接静态库还需要链接静态库所依赖的其他库,那么答案通常是肯定的。静态库仅包含实际库中的功能,您可以将静态库更多地视为目标文件的集合或存档。静态库不包含有关它们所依赖的其他库的任何信息。


至于你的问题,预处理器错误,这是因为你从你的静态库中包含了一个头文件,而这个头文件又包含了一些头文件。但是预处理器默认搜索路径中没有二次包含头文件,需要添加。

这仍然与链接任何库无关,这是一个纯粹的预处理器问题,在我上面列表的第二步中处理。

关于c++ - 链接静态库导致链接库出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25258269/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com