为什么我需要不直接从可执行文件中调用的dll的导入库?

时间:2018-10-29 15:26:20

标签: c++ dll linker shared-libraries

我有一个动态库 A.dll ,该库由 B.dll 使用。我在可执行文件 C.exe 中使用 B.dll

level 0: A.dll
level 1: B.dll
level 2: C.exe

我在Visual Studio中收到一个链接器错误,说该链接器找不到导入库A.lib,即使我的可执行文件没有直接使用A.dll。为什么是这样?我以为A.lib中的信息将被编译为B.dll

1 个答案:

答案 0 :(得分:1)

如果没有代码,我会怀疑B的公共头包含A的头,而A的头具有#pragma注释(lib,“ a.lib”)。您描述的模式将需要B仅在其私有接口中依赖A,而不是直接向A公开任何内容。