c++ - C++ 标准库是静态库吗?

标签 c++

当我们创建一个静态库时,我们必须向客户提供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/

相关文章:

c++ - << 的运算符重载需要 const;产生头痛

c++ - 类模板中的隐藏好友模板

c++ - 在 Visual C++ 控制台应用程序中显示图像?

c++ - 如何绘制一个像素

c++ - scanf 格式输入的 cin 类比是什么?

c++ - 增加缓冲是否会提高 C++ 中 ifstream.getline() 的最高速度?

c++ - 将二维结构数组传递给函数

javascript - Null 是类型对象,所以它是真的吗?幕后发生了什么?

c++ - 如何跟踪列表列表的分配内存?

c++ - 如何在 C++ 头文件中初始化和返回数组?