【问题标题】:Firebase C++ SDK Multithreaded DLL /MD has no DLL files, Why?Firebase C++ SDK 多线程 DLL /MD 没有 DLL 文件,为什么?
【发布时间】:2021-12-30 16:29:37
【问题描述】:
在 Firebase CPP SDK 网站上,它声明:
对于 Windows,库版本基于以下内容提供:
构建平台:32 位 (x86) 与 64 位 (x64) 模式
Windows 运行时环境:多线程/MT 与多线程 DLL
/MD
目标:发布与调试
但是他们提供的构建没有DLL文件,只有Lib文件,当我链接Lib文件时,项目工作正常,它怎么可能不要求firebase DLL?
【问题讨论】:
标签:
c++
multithreading
firebase
【解决方案1】:
链接到静态库时,运行时不需要 dll。
这是我发现的:
enter link description here
静态库(也称为存档)由编译并直接链接到您的程序中的例程组成。当您编译使用静态库的程序时,您的程序使用的静态库的所有功能都将成为可执行文件的一部分。在 Windows 上,静态库通常具有 .lib 扩展名,而在 linux 上,静态库通常具有 .a(存档)扩展名。静态库的一个优点是您只需分发可执行文件以便用户运行您的程序。因为库成为您程序的一部分,这确保了正确版本的库始终与您的程序一起使用。此外,由于静态库成为您程序的一部分,您可以像为自己的程序编写的功能一样使用它们。不利的一面是,由于库的副本成为每个使用它的可执行文件的一部分,这可能会导致大量空间浪费。静态库也不容易升级——要更新库,需要替换整个可执行文件。