假设我有一个源代码,并将其编译为静态库,所以我有一个.lib文件。让我们称之为 first.lib。
然后我有其他源代码,它调用前面代码中的函数。我将此代码构建为共享库,并将first.lib作为链接器的输入。现在我有一个 second.lib, secondary.dll.
到目前为止,一切顺利,一切正常。 但我想创建一个 EXE 应用程序,它也使用 secondary.dll 和first.lib。在构建应用程序时,我链接第二个.dll 并将第一个.lib 作为链接器的输入。
我的应用程序是否包含两次first.lib 的内容?就我而言,似乎确实如此。
我的应用程序是否包含两次first.lib 的内容?
答案是“有点”。
当您链接静态库时,您不会将所有库包含在 DLL 或可执行文件中,而只会包含您实际使用的部分。
因此,静态库的一部分位于 DLL 中,库的一部分位于可执行文件中,并且库的一部分可能同时存在于两者中。