如何使基于SDL构建的库不需要SDL头文件

时间:2015-11-10 21:11:02

标签: c++ header sdl static-libraries

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

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

当我创建我的图书馆时,我会与SDL2.libSDL2main.lib相关联。我将所有SDL头文件包含在我的库文件中。当我构建时,它会生成我的库文件; GGL.lib

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

1 个答案:

答案 0 :(得分:4)

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

如果需要在标头中声明SDL类型的指针(就像通常使用SDL一样),则转发声明它。但是,对于您图书馆的用户,该类型仍然不完整。如果您的图书馆是面向对象的,那么Pimpl成语就是基于相同的原则 - 这隐藏了一切。