用静态库构建共享库
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 中,库的一部分在可执行文件中,并且库的一部分可能在两者中。
假设我有一个源代码,我将它编译为静态库,所以我有一个.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 中,库的一部分在可执行文件中,并且库的一部分可能在两者中。