c++ - CRT 的 C++ 等价物是什么?

标签 c++ c windows

我是 C++ 的新手,但我以前使用过 C。

用 C 编写的程序必须与 CRT 链接(在 Windows 中,它是文件 libcmt.lib),其中包含 C 函数(例如:printf()).

但我想知道,是否存在“C++RT”(与 CRT 相反)这样的东西,我的意思是 C++ 函数和类在哪里(例如:std::ofstream) 存储。

我还有一个问题,如果我使用一些 C 函数(例如:printf()),我的 C++ 程序是否会同时与 CRT 和“C++RT”链接,还是“C++RT”包含 CRT?

最佳答案

这取决于 C++ standard library 的具体实现你正在使用。

GCC附带 libstdc++并且您的程序会自动链接到 libstdc++*.so*libstdc++*.dll*(文件名可能因分发、构建选项和使用的版本而异)

Clang/LLVM附带 libc++libc++*.so* 在 Linux 和 OS X 上,但在 Windows 上使用 Visual C++ 库。

Microsoft Visual C++根据配置 (link),链接到 libcp*.libmscp*.lib(以及关联的 .dll)之一。

请注意,通常可以使用非默认标准库实现。例如,Clang 可以在 Linux 上使用 libstdc++ 或 libc++。 Intel compiler在 Windows 上使用 Microsoft 库,在 Linux 上使用 libstdc++。也有(曾经)与特定编译器无关的实现,比如 STLport .

关于c++ - CRT 的 C++ 等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44954445/

相关文章:

c# - 如何在 C++ 中触发 C# COM 事件?

c++ - C/C++ 用 ascii 艺术声明 2D/3D 数组

windows - 检查是否安装了 Windows 镜像组件(wic 注册表)

windows - FOR 循环将每次迭代用相同的前缀分组在一行中

c - 有没有办法检测是否按下了某个键?

c++ - 无法让 Ocean Optics OmniDriver 工作

c++ - 类模板中的虚函数

c++ - 从 C 数组移动到 std::map <int, val> 运算符 `-` 陷阱

c - STDOUT 缓冲区在哪里?

c++ - 使用算术符号来遍历字符串