当我们创建一个静态库时,我们必须向客户提供2个文件:
- .h文件
- .lib 文件
但是我们在创建动态库的时候,必须要给客户端提供3个文件:
- .h文件
- .lib 文件(又名导入文件)
- .dll文件
据我所知,我无法构建客户端应用程序(例如控制台应用程序)
- 静态链接到动态库
- 动态链接到静态库
问题
当我构建一个简单的控制台应用程序时,例如:
#include <iostream>
int main()
{
std::cout << "Hello World!";
return 0;
}
输出(在本例中为 .exe 文件)是独立的。 这是否意味着“所有 C++ 标准库都是静态库”?
最佳答案
The output (.exe file in this case) is self-contained. Does it mean that "all c++ standard libraries are static libraries" ?
没有。没有。
当我在 Linux 中对一个简单的 C++ 程序执行 ldd
时,我明白了。
linux-vdso.so.1 => (0x00007ffc125f2000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f6e371b2000)
/lib64/ld-linux-x86-64.so.2 (0x00007f6e3757c000)
这意味着,除非您拥有那些动态库,否则可执行文件将不会运行。
您会在 Windows 上找到类似的依赖项。
关于c++ - C++ 标准库是静态库吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50167251/