我有一个使用谷歌日志库 (glog) 的库 A.dll。现在我想在另一个项目中使用这个库,在我自己的项目中我不想使用 glog。我只想使用 A.dll,但在编译过程中,编译器说找不到 logging.h header !!!
为什么会这样?!它是 A.dll 内部使用的 header ,我想使用 A 的接口(interface)而不是 glog。我认为包含 A.h 就足够了,我不需要 logging.h 。我错了吗?知道问题出在哪里吗?
A.dll 是用 MSVC++ 2015 构建的,我在 QT Creator 中使用 MSVC++ 2015。
最佳答案
您还没有包含 glog 头文件如何以及在何处包含在 A 库中的证据。
但是我们可以假设它是 #included 在公共(public)库头文件之一中,
你的项目包括使用图书馆,
所以你间接地得到了 glog 头文件的依赖。
其中一个原因是 A 库的开发人员做得不好,未能隐藏内部唯一依赖项。
如何克服间接包含依赖?
这取决于 A 库 header 的编写方式,以及您或原始 A 库开发人员是否可以更改它以避免暴露内部依赖性。
关于c++ - 为什么使用这个库需要它的内部头文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41977886/