link 一个库在另一个库中,仍然必须 link 它在最终项目中

link a library within another, still have to link it in the final project

所以我的项目是这样的:

游戏(exe) 核心(库) Assimp(库)

我在 Core 中 linked Assimp。我在那里创建了一个 class,其中包含 assimp headers。 游戏 links 核心。 现在,如果我在使用 assimp header 的 class 游戏中创建一个 object,它会说找不到 header 文件。

那么如何让它工作,这样我就不必 link 在游戏中 assimp 了?

链接静态库与包含项目的 header 之间存在差异: C++ : Difference between linking library and adding include directories

你说你已经 link在核心内部编辑了 assimp 但这是不可能的,静态库需要 link 编辑到使用它的可执行文件中,但是他们不能 link 其他静态库。 我猜你的意思是你已经在核心项目中包含了 assimp 的 headers 这是正确的,但是如果你通过核心项目公开了任何 assimp API 那么你还需要在任何其他使用核心的项目中包含 assimp headers。如果你想避免这样做,你可以隐藏 assimp API,只在 .cpp 文件中包含它的 headers。

游戏项目还需要 link core 和 assimp,因为两者都需要 linked 到最终的可执行文件中,

Microsoft 对使用静态库的评价: https://msdn.microsoft.com/en-us/library/ms235627.aspx

简要示例说明:

核心项目header文件,core.h

#include <assimp.h>

游戏header文件,game.h

#include <core.h>

现在当通过游戏项目包含core.h时,assimp.h也包含在内,这意味着游戏需要知道assimp.h

的位置