用静态库构建共享库

Build shared library with static library

假设我有一个源代码,我将它编译为静态库,所以我有一个.lib 文件。让我们称之为first.lib.

然后我有其他源代码,它是从以前的代码调用函数。我将此代码构建为 共享库 并将 first.lib 作为 link 人员的输入。现在我有一个 second.lib, second.dll.

到目前为止,还不错,一切正常。 但我想创建一个 EXE 应用程序,它也使用 second.dll 和 first.lib。我 link 反对 second.dll 并在构建应用程序时将 first.lib 作为 linker 的输入。

我的应用程序是否包含两次 first.lib 的内容?就我而言,它似乎确实如此。

Does my application contain the contents of the first.lib twice?

答案是"kinda"。

当您 link 一个静态库时,您并未在 DLL 或可执行文件中包含所有库,仅包含您实际使用的部分。

因此,静态库的一部分在 DLL 中,库的一部分在可执行文件中,并且库的一部分可能在两者中。