我可以创建一个链接另一个库但不依赖于其包含的c ++库吗?

时间:2016-04-16 14:10:06

标签: c++ header include shared-libraries static-libraries

我想创建一个链接SFML库和其他库的动态/静态库。我现在的问题是,在项目中取消我的图书馆时,我必须确保SFML includes可用于该项目。
我可以以某种方式删除对第三方标题的依赖吗?
header-only库怎么样?

其他库如何处理这个问题(使用SFML时,即使SFML取决于其他库,我也只需要它们的标题)

1 个答案:

答案 0 :(得分:1)

您必须重新组织头文件并重新构建代码。您需要有两组头文件:

  • 用于构建库的内部头文件,这些头文件包含和引用SFML的头文件,类和资源。

  • 构成图书馆界面的公共标题文件。

您的图书馆仅安装公共集。公共头文件不包含SFML头文件,并且它们不引用任何SFML类。

您的公共头文件和类通常会声明但不定义内部类和指向它们的指针。内部类仅在您自己的内部头文件中定义。

你应该花些时间查看一些大型流行的C ++库中的头文件。您经常会找到指向公共头文件中未定义的内部类的指针和其他引用。它们是库使用的内部类,不会公开。

即使很多C库也是这样构建的。