如何创建使用其他库的库?
Posted
技术标签:
【中文标题】如何创建使用其他库的库?【英文标题】:How to create library that uses some other libraries? 【发布时间】:2020-07-26 16:54:26 【问题描述】:我正在尝试创建一个图形库(没什么大不了的,只是为了学习东西)。在 Visual Studio 中,我有一个解决方案和两个项目 - dll 和 exe。对于窗口管理,我使用 GLFW 库。在我自己的窗口类中,我希望有一个 GLFW 窗口结构的私有成员。问题是我的 exe 项目不知道 GLFW 是什么 - 它不知道在哪里可以找到 #include <glfw/glfw3>
。
我的问题是 - 创建使用其他库的此类库的正确方法是什么?将 exe 项目设置为包含所有这些库对我来说听起来不是一个好主意。
【问题讨论】:
使用其他库的 DLL 项目的设置方式与使用其他库的 EXE 项目完全相同。 您是在谈论库还是包含?他们不一样。如果你想使用glfw3
(甚至来自你的DLL
),你必须包含glfw3
标头。
@Manuel 我想使用 GLFW 库,所以在 dll 项目中我包含<GLFW/glfw3.h>
。但是 exe 项目不知道 GLFWWindow 是什么,因为它不知道在哪里可以找到那个头文件。你的意思是我也应该在我的 exe 项目中包含这个文件?
@OftenDeadKanji 是的。它必须知道 类型,并且会从 DLL
获取其他所有内容(对象、函数等)。
@OftenDeadKanji 很高兴您找到了处理方法。您可以针对自己的问题撰写回复并接受它,以便其他人可以从您的经验中学习。
【参考方案1】:
由于您使用的是 Visual Studio,因此 Microsoft 文档是获取信息的好地方。 https://docs.microsoft.com/en-us/cpp/build/dlls-in-visual-cpp?view=vs-2019 他们有关于 DLL 以及如何创建它们以及如何将 DLL 链接到项目的描述。
【讨论】:
【参考方案2】:感谢@Manuel,我知道了如何做到这一点:dll 和 exe 项目,必须包含库的头文件。
我的解决方案:在 dll 中我使用预编译的头文件,因此所有库的头文件都包含在具有相对路径的文件中。在 dll 项目设置中,我放置了正确的路径,以便任何库文件都知道如何找到它们的标题。重要的是我的 exe 项目包含我的 dll 中的一个头文件,并且该文件包含预编译的头文件,因此 exe 项目“知道”它需要的关于库的一切。
再次感谢@Manuel 的帮助!
【讨论】:
以上是关于如何创建使用其他库的库?的主要内容,如果未能解决你的问题,请参考以下文章