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

标签 c++ dll linker shared-libraries

我有一个动态库 A.dllB.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

最佳答案

如果没有代码,我怀疑 B 的公共(public) header 包含 A 的 header ,而 A 的 header 有一个#pragma comment(lib, "a.lib")。您描述的模式需要 B 仅在其私有(private)接口(interface)中依赖 A,而不是直接公开来自 A 的任何内容。

关于c++ - 为什么我需要我不是直接从我的可执行文件调用的 dll 的导入库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53048760/

相关文章:

c++ - 为什么法线使用相机空间而不是模型空间?

dll - PKCS11 Windows 无效引擎 YubiHSM2

c# - 从另一个 dll、C# 重新加载 dll 函数

c - 什么 C 编译器与 Borland Turbo Link 5.1 匹配?

c - 动态链接错误

c++ - GCC -m32 标志 :/usr/bin/ld: skipping incompatible

c++ - 如何翻转 QCheckBox 显示

c++ - (C++) CURL_STATICLIB : No such file or directory

c# - 'System.Runtime.InteropServices.SafeHandle'和 'System.Runtime.InteropServices.dll'中都存在 'System.Runtime.Handles.dll'类型

C++:使用int vs struct对静态成员变量进行依赖初始化的静态