将静态库链接到动态库

问题描述

我有一个 Visual Studio 2019 DLL 项目,我想针对它静态链接一个库。当我在 dll 中使用静态库中的符号时,它会正确构建。但是,当我将动态库项目链接到可执行应用程序时,该应用程序给出了一个解决的外部符号错误。我是否也必须将静态库链接到应用程序?

解决方法

DLL 是一个二进制文件,类似于 EXE 文件,因此当您将它链接到静态库时,必须满足所有依赖项。链接到这个动态库的 EXE 文件不知道它的任何内部结构,比如某个静态库的符号,因此不应该因为静态库而存在任何未解析的符号。

获得此信息的唯一方法是将 EXE 也链接到静态库并使用其中的一些符号,但这与 DLL 无关。

所以不,除非您在 EXE 文件中使用静态库中的某些内容,否则您不需要链接它。