为什么使用这个库需要它的内部headers?

Why using this library needs its internal headers?

我有一个使用 google 日志库 (glog) 的库 A.dll。现在我想在另一个项目中使用这个库,在我自己的项目中我不想使用 glog。我只想使用 A.dll,但是在编译过程中,编译器说找不到 logging.h header!!!

为什么会这样?!它是 A.dll 在内部使用的 header,我想使用 A 的接口而不是 glog。我认为包括 A.h 就足够了,我不需要 logging.h 。我错了吗?知道问题出在哪里吗?

A.dll 使用 MSVC++ 2015 构建,我在 QT Creator 中使用 MSVC++ 2015。

您没有提供 glog header 文件如何以及在何处包含在 A 库中的证据。
但是我们可以假设它是#included 在 public 库 header 文件之一中, 你的项目包括使用图书馆, 所以你间接地得到了 glog headers 依赖。

其中一个原因是A库的开发人员做得不好,未能隐藏内部唯一依赖项。

如何克服间接包含依赖?
这取决于 A 库 header 的编写方式,以及您或原始 A 库开发人员是否可以更改它以避免暴露内部依赖性。