c++ - 为什么使用这个库需要它的内部头文件?

标签 c++ visual-c++ dll header-files glog

我有一个使用谷歌日志库 (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/

相关文章:

c++ - 我可以使用QTimer来实现多线程算法吗?

交换函数的 C++ 重载不起作用

c++ - 当调用包含 SAFEARRAY 的 VARIANT 时,VariantClear() 会抛出异常

visual-c++ - Hook Windows API 函数以拦截 dll 加载(仅限 Windows)

python - Firebird嵌入式安装问题: library could not be determined

c++ - mysql简单数据库设计? (问答比赛)

MSVC 和 Clang/GCC 之间的 C++17 条件(三元)运算符不一致

c# - C++ DLL 与 C# : Exposing multidimensional arrays of unknown size, 和内存管理互操作

c# - 不使用 SetOut 控制台输出到文件

c++ - 基于输入文件的未知大小数组