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
的位置
所以我的项目是这样的:
游戏(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
的位置