Gre*_*g M 3 c++ sdl header static-libraries
我在Google或SO上找不到任何真正的东西。我不知道是因为它不常见,还是因为我使用了错误的字词进行搜索。我在这里阅读了这个问题,但并没有真正回答我的问题。
因此,我正在尝试在C ++的SDL之上构建一个库。现在,我似乎无法弄清楚的是如何使使用我的库的项目与SDL文件完全独立,除了dll。
制作图书馆时,我与SDL2.lib和链接SDL2main.lib。我将所有SDL头文件都包含在我的库文件中。构建时,它会生成我的库文件;GGL.lib。
但是,当我想在另一个项目中测试我的库时,我必须包括所有SDL头文件,因为在我的项目中Window.h,它包括SDL.h。我想知道是否有什么办法可以使我的库头文件独立于SDL而不是SDL dll。
您显然需要避免在库的头文件中包含SDL头文件。尽可能将它们仅包含在源文件中。这消除了多余的依赖性,并加快了编译过程。但是,您需要完全独立,因此,如果无法删除一个#include指令,则会失败。
如果您需要在标头中声明一个SDL类型的指针(就像通常对SDL所做的那样),请向前声明它。但是,对于您的图书馆用户而言,该类型仍然不完整。如果您的库是面向对象的,则可以使用基于相同原理的Pimpl Idiom-这将隐藏所有内容。