gpt4 book ai didi

c++ - 如何使构建在 SDL 之上的库不需要 SDL 头文件

转载 作者:太空狗 更新时间:2023-10-29 20:37:49 25 4
gpt4 key购买 nike

我真的无法在 Google 或 SO 上找到任何关于此的信息。我不知道是不是因为它不常见,或者因为我使用了错误的术语来搜索。我读了this问题在这里,但它并没有真正回答我的问题。

所以我正在做的是尝试在 SDL 之上为 C++ 构建一个库。现在我似乎无法弄清楚如何使使用我的库的项目完全独立于 SDL 文件,dll 除外。

当我创建我的库时,我链接到 SDL2.libSDL2main.lib。我将所有 SDL 头文件包含到我的库文件中。当我构建时,它会生成我的库文件; GGL.lib.

但是当我想在另一个项目中测试我的库时,我必须包含所有 SDL 头文件,因为在我项目的 Window.h 中,它包含 SDL.h。我想知道是否有任何方法可以让我的库头文件独立于 SDL,dll 除外。

最佳答案

您显然需要避免在库的头文件中包含 SDL 头文件。尽可能将它们包含在源文件中。这消除了冗余依赖并加快了编译过程。但是你想要完全独立,所以如果你不能删除一个 #include 指令,你就失败了。

如果您需要在 header 中声明 SDL 类型的指针(就像通常对 SDL 所做的那样),请前向声明它。然而,该类型对于您图书馆的用户来说仍然是不完整的。如果您的库是面向对象的,可以使用 Pimpl Idiom,它基于相同的原则 - 这会隐藏所有内容。

关于c++ - 如何使构建在 SDL 之上的库不需要 SDL 头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33639699/

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