我无法在Google或SO上找到任何关于此事的内容。我不知道是不是因为它不常见,或者因为我使用错误的术语来搜索。我在这里看了this个问题,但它并没有真正回答我的问题。
所以我正在尝试在SDL for C ++之上构建一个库。现在我似乎无法弄清楚如何使用我的库的项目完全独立于除dll
之外的SDL文件。
当我创建我的图书馆时,我会与SDL2.lib
和SDL2main.lib
相关联。我将所有SDL头文件包含在我的库文件中。当我构建时,它会生成我的库文件; GGL.lib
。
但是当我想在另一个项目中测试我的库时,我 包含所有SDL头文件,因为在我的项目Window.h
中,它包含SDL.h
。我想知道除了dll
之外,我是否有任何办法让我的库头文件独立于SDL。
答案 0 :(得分:4)
您显然需要避免在库的头文件中包含SDL头文件。在可能的情况下,仅将它们包含在源文件中。这样可以消除冗余的依赖关系并加快编译过程。但是你想要完全独立,所以如果你不能删除一个#include
指令,你就失败了。
如果需要在标头中声明SDL类型的指针(就像通常使用SDL一样),则转发声明它。但是,对于您图书馆的用户,该类型仍然不完整。如果您的图书馆是面向对象的,那么Pimpl成语就是基于相同的原则 - 这隐藏了一切。